我使用perl脚本生成一个带有多个链接的语言测试页面(其中没有一个指向不同的页面,它们用于取消隐藏一些提示),复选框和单个提交按钮。单击按钮时,我显然希望传递复选框的内容(通过POST方法),但是 - 我想知道通过单击链接可以窥视哪些提示。
现在,store values from clicked link into hidden input for 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'};
......它实际上什么都没打印。我很确定这不是解析输入的问题,因为读取其他隐藏的值可以正常工作。
你有什么想法我做错了吗?
感谢您对此的帮助。
答案 0 :(得分: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);
}
});
答案 1 :(得分:0)
一个问题是您定义脚本标记的方式。您同时拥有src
属性和脚本正文。这意味着身体不会被应用。
试试这个:
<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");