我有一个表单,我正在使用一堆复选框。在加载文档之前,通过php检查一些复选框。我试图确定用户是否检查了一个尚未从php脚本中检查过的复选框。
如果他们选中了一个未选中的复选框,我想显示一个包含textarea的div,他们可以在其中添加其他详细信息。
到目前为止,我认为最好的方向是将所有复选框的值和状态存储到数组中。 checked
的状态存储为1,unchecked
的状态存储为0。
每次单击一个复选框时,都会创建一个包含所有复选框的值和状态的新数组。然后将其与原始数组进行比较。如果在比较期间识别出新的已选中复选框,则显示包含textarea的div。
我想知道是否有人知道如何做这样的事情,或者有更好的方法来完成我想做的事情?
HTML:
<label><input type='checkbox' class='supress' name='suppressList[]' value='background' /></label>
<label><input type='checkbox' checked='checked' class='supress' name='suppressList[]' value='refsComp' /></label>
<label><input type='checkbox' class='supress' name='suppressList[]' value='I9' /></label>
<textarea id='details' name='additionalDetails'></textarea>
jQuery的:
var status = $('input[type="checkbox"]').filter('.supress').map(function(){
var value = $(this).attr('value');
if($(this).is(':checked'))
return { 'value':value, 'status' : 1};
else
return { 'value':value, 'status' : 0};
});
答案 0 :(得分:0)
我认为只要你不弄乱被检查的属性,你可以依赖它只存在于默认属性的事实。因此$('[checked]:checked')
将为您提供仍然经过检查的默认设置,$(':not([checked]):checked')
将为您提供未经检查的默认值。
答案 1 :(得分:0)
一种简单的方法是为所有复选框提供类,并且需要更改事件
$(document).ready(function(){
$('.checkbox').change(function(event) {
if ($(this).is(":checked")) {
$(this).closest('tr').addClass('selected');
}
else {
$(this).closest('tr').removeClass('selected');
}
});
});
请在小提琴中找到样本http://jsfiddle.net/8gzn7ryh/