同时过帐选中和取消选中的复选框
我正在尝试在一个web表单中创建一系列复选框,根据它们是否被选中,它们会将"true"或"false"发布到下一个php页面。我决定对于每个复选框(value="true"),我都会有一个隐藏的复选框(value="false"),它总是相反的(当复选框被选中时,隐藏复选框被取消选中,依此类推)。我正在使用jQuery执行此操作。
‘td’元素的数量未知(‘td’可以使用一个按钮复制无限次,以提交多个值)。出于测试目的,我将警报添加到jQuery。
当我将jQuery代码和隐藏复选框添加到源代码中时(出于测试目的,我将其设置为可见),代码将无法工作,我网页上的所有其他jQuery也停止工作!
jQuery代码:
$(document).ready(function(){
/***post all 'required' checkboxes instead of just checked ones***/
$(".required").click(function(event){
event.preventDefault();
alert("test");
nextIndex = this.index() + 1;
alert(nextIndex);
$(".required:eq(nextIndex)").attr("checked", !.required:eq(nextIndex).attr("checked"));
});
});
HTML:
<td>
<input type="checkbox" class="required" name="required[]" value="true">
<input type="checkbox" class="required" name="required[]" value="false" style="display: none;" checked>
</td>
解决方案
您不必隐藏其中一个复选框。这里有一个解决方案,可以实现您想要的功能:
<input type="hidden" name="required" value="false" />
<input type="checkbox" name="required" value="true" />
如果未选中该复选框,则隐藏字段将与false
值一起提交。如果选中该复选框,则复选框中的true
值将覆盖隐藏输入中的false
值。
只要您能为每个复选框命名稍有不同,它就应该可以工作。
以下内容应该也适用于值数组:
<input type="hidden" name="required[0]" value="false" />
<input type="checkbox" name="required[0]" value="true" />
<input type="hidden" name="required[n]" value="false" />
<input type="checkbox" name="required[n]" value="true" />
这样,您不需要任何客户端javascript来切换隐藏的复选框。
相关文章