prop('checked',true)仅在视觉上设置值,但在提交时不传递给服务器

时间:2015-03-20 09:41:54

标签: javascript jquery frontend

我在表单中有一个复选框列表([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);
            }
        }
    }) 

0 个答案:

没有答案