如何使未选中复选框返回一个值与jQuery序列化?

前端之家收集整理的这篇文章主要介绍了如何使未选中复选框返回一个值与jQuery序列化?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带有一些复选框的 HTML表单.我使用jQuery .serialize()函数使查询字符串提交到数据库.我遇到的问题是,当取消选中复选框时,.serialize()函数不会在查询字符串中注册它.

我的问题在这个jsfiddle:http://jsfiddle.net/cTKhH/中得到了说明.

这是一个问题,因为我仍然需要将未经检查的复选框的值保存到数据库.现在,仅在选中复选框时才会保存信息.如果未选中,并且提交了来自.serialize()的信息,则不会进行任何更改,因为没有提交任何信息.

有没有人知道如何使我的.serialize()函数在取消选中时返回所有复选框的未经检查的值?

谢谢!!

**编辑**

再多一点信息,我现在知道为什么未提交未选中的复选框,因为它不是“成功”的表单控件,请参见此处:http://www.w3.org/TR/html401/interact/forms.html#successful-controls.

希望我仍然修改.serialize()函数以提交未经检查的值.

解决方法

这是一个简单的例子 – 我相信你可以将它包装成一个漂亮的插件.

HTML

<form id="doit" action="" method="post">    
    <input type="checkBox" name="test" data-checkedName="test" data-uncheckedid="yup" value="true" class="checkedValue" />
    <input type="hidden" name="test" id="yup" value="false" />
    <input type="submit" value="serialize" />
</form>

JS

$(function () {

    $(".checkedValue").click(function () {

        var $cb = $(this),$associatedHiddenField = $("#" + $cb.attr("data-uncheckedid")),name = $cb.attr("data-checkedName");

        if (this.checked) {
            $cb.attr("name",name);
            $associatedHiddenField.removeAttr("name");

        } else {
            $cb.removeAttr("name");
            $associatedHiddenField.attr("name",name);
        }

    });

    $("#doit").submit(function (e) {
        e.preventDefault();
        console.log($(this).serialize());
    });
});
原文链接:https://www.f2er.com/jquery/177152.html

猜你在找的jQuery相关文章