我在表单中有一个复选框列表([checkgroup]),我有一个“check / uncheck all”复选框([checkgroup] .checkall-responsive)。然而,这个不仅仅是外观/界面,而是意味着将值发送到服务器,指示列表中的ALL或NOT ALL元素已被检查。
因此,我将简单的JQuery行为应用于所有复选框列表元素和前导“check all”元素,这样如果选中所有列表元素,则会自动检查前导复选框。
它会在视觉上得到很好的检查,但是当我提交表单时,该值不会到达。换句话说,只有当我手动检查前导复选框时才会将值传递给服务器,而不是通过检查列表中的所有复选框。
在MacOS上的FF和Safari上确认。尝试道具和attr:相同的结果。这是片段:
$("input[checkgroup]").live("click",function () {
var group=$(this).attr("checkgroup");
//alert(group);
if ($(this).hasClass("checkall-responsive")) {
if ($(this).is(":checked")) {
$("input[checkgroup="+group+"]").not(".checkall-responsive").prop('checked', true);
}
else {
$("input[checkgroup="+group+"]").not(".checkall-responsive").prop('checked', false);
}
}
else {
if ($("input[checkgroup="+group+"]").not(".checkall-responsive").length==$("input[checkgroup="+group+"]:checked").not(".checkall-responsive").length) {
$("input[checkgroup="+group+"].checkall-responsive").prop('checked', true);
//alert($("input[type=checkbox].checkall-responsive").length);
}
else {
$("input[checkgroup="+group+"].checkall-responsive").prop('checked', false);
}
}
})