2

可能重复:
发布未选中的复选框

我在序列化空数组输入时遇到了问题。例如:

<input type="checkbox" name="test_checkbox[]" value="test" id="test">
<input type="checkbox" name="test_checkbox[]" value="test1" id="test1">
<input type="checkbox" name="test_checkbox[]" value="test2" id="test2">

当这些都没有被检查并且我提交表单(通过 POST)时,jQuery.serialize() 会排除它们并且它们不会出现在我的 $_POST/Serialized 字符串中。

但是我需要像 test_checkbox=0 这样的东西,当没有勾选时。

我怎样才能做到这一点?

4

2 回答 2

0

试试这种方式 DEMO

   <form id="testform">
        <input type="checkbox" name="test_checkbox[0]" id="test" checked="checked" value="true"/>
        <input type="checkbox" name="test_checkbox[1]" id="test1" checked="checked" value="true"/>
    <span>click</span>
    </form>

脚本

$('span').click(function() {
    var formDate = $('#testform').serialize();
    console.log(formDate);
})​

现在你想要这样看演示

$('span').click(function() {
     var str=$('form input:not([type="checkbox"])').serialize();
    var str1=$("form input[type='checkbox']").map(function(){return this.name+"="+this.checked;}).get().join("&");
    if(str1!="" && str!="") str+="&"+str1;
    else str+=str1; 
    alert(str);
})​
于 2012-09-25T10:28:54.927 回答
0

只需将其插入您的服务器代码中

$_POST['test_checkbox'] = isset($_POST['test_checkbox']) ? $_POST['test_checkbox'] : 0;

如果客户端没有设置任何变量,则将$_POST['test_checkbox']变量设置为 0。不过,我建议使用新变量而不是重置 中的条目$_POST

于 2012-09-25T10:36:01.793 回答