修改$("form:first").serialize(); 中某一名称的checkbox一个均未选择, 取不到name, 后台无法更新为null的错误
来源:互联网 发布:日本传统音乐知乎 编辑:程序博客网 时间:2024/05/21 20:25
<html><head> <script src="ec/jquery/jquery-1.6.4.min.js" type="text/javascript"></script> <script type="text/javascript"> $.fn.extend({ "fixedSerialize": function () { var $f = $(this); var data = $(this).serialize(); var $chks = $(this).find(":checkbox:not(:checked)"); //取得所有未选中的checkbox if ($chks.length == 0) { return data; } var nameArr = []; var tempStr = ""; $chks.each(function () { var chkName = $(this).attr("name"); if ($.inArray(chkName, nameArr) == -1 && $f.find(":checkbox[name='" + chkName + "']:checked").length == 0) { nameArr.push(chkName); tempStr += "&" + chkName + "="; } }); data += tempStr; return data; } }); function test() { var data = $("form:first").fixedSerialize(); alert(data); } </script></head><body><form id="myform" > <input type="text" name="YY" value="马医生" /> <ul> <li>name为A: <input type="checkbox" name="A" checked="checked" value="A1" />A1 <input type="checkbox" name="A" value="A2" />A2 <input type="checkbox" name="A" checked="checked" value="A3" />A3 </li> <li>name为B: <input type="checkbox" name="B" checked="checked" value="B1" />B1 <input type="checkbox" name="B" checked="checked" value="B2" />B2 <input type="checkbox" name="B" value="B3" />B3 </li> <li>name为C: <input type="checkbox" name="C" value="C1" />C1 <input type="checkbox" name="C" value="C2" />C2 <input type="checkbox" name="C" value="C3" />C3 </li> <li>name为D: <input type="checkbox" name="D" value="D1" />D1 <input type="checkbox" name="D" value="D2" />D2 <input type="checkbox" name="D" value="D3" />D3 </li> </ul> <input type="button" value="得到form中, 修改之后的serialize之后的值" onclick="test()" /></form></body></html>