0

我使用 perl 脚本生成一个语言测试页面,其中包含多个链接(没有一个链接指向不同的页面,它们用于取消隐藏一些提示)、复选框和单个提交按钮。单击按钮时,我显然希望传递复选框的内容(通过 POST 方法),但我也想知道通过单击链接窥视了哪些提示。

现在,在store values 从 clicked link 到 post 的隐藏输入中回答了类似的问题。但是,它似乎对我不起作用。

我脑子里有这个(除其他外)

<script src="jquery.js" type="text/javascript">
  $('a.mini-view').click(function(){
    var clicked = $(this).attr("clicked");
    var value = $(this).attr("data-student");
    if (!clicked){
        var newValue = $('hiddenfield').val() + "," + value;
        $('hiddenfield').val(newValue);
        $(this).attr("clicked", true);
    }
});
</script>

我的身体里有这个

<form action="./index.pl" method="post">
    <input type="hidden" name="hiddenfield" id="hiddenfield">
    <a  class="mini-view" id="HSntj" href="javascript:toggle25('CSntj','HSntj');" data-student="1">More</a>
    <a id="HSnt2j" href="javascript:toggle25('CSnt2j','HSnt2j');" data-student="2" class="mini-view">More</a></span>"; 
    <span align=left id="CSnt2j" style="display: none; margin-top: 6px;">something</span>
</form>

但是当我将所有输入提交给 index.pl 脚本时

print $input{'hiddenfield'};

...它实际上什么也没打印。我很确定这不是解析输入的问题,因为读取其他隐藏值可以正常工作。

你有什么想法我做错了吗?

我会很感激你在这方面的帮助。

4

2 回答 2

1

我将您的代码复制到jsFiddle并使其正常工作。看起来您最大的问题是没有正确识别隐藏字段(这意味着您缺少 $('#hiddenfield') 的 # 符号

$('a.mini-view').click(function(){
    var clicked = $(this).attr("clicked");
    var value = $(this).attr("data-student");
    if (!clicked){
        var newValue = $('#hiddenfield').val() + "," + value;
        $('#hiddenfield').val(newValue);
        $(this).attr("clicked", true);
    }
});
于 2013-04-15T21:52:20.067 回答
0

一个问题是您定义脚本标记的方式。你有一个src属性和一个脚本主体。这意味着不会应用body。

尝试这个:

<script src="jquery.js" type="text/javascript" />
<script type="text/javascript">
    ...blah blah
</script>

但是,我不认为这$(this).attr("clicked");是一回事。你想用这个来达到什么目的?

编辑:好的,我明白你在做什么。这是一个自定义属性。更好的方法可能是使用数据属性,因为它实际上是 HTML5 中的有效 HTML。

var clicked = $(this).data("clicked")

$(this).attr("clicked", true);

这也适用于学生数据,你可以这样写:

var value = $(this).attr("data-student");
于 2013-04-15T21:44:50.177 回答