1
<form>
    // radio group 1
    <input type="radio" name="a" value="Y">Yes
    <input type="radio" class="ml_10" name="a" value="N">No
    <input type="radio" class="ml_10" name="a" value="O">Don't know</br>

    // radio group 2
    <input type="radio" name="b" value="Y">Yes
    <input type="radio" class="ml_10" name="b" value="N">No
    <input type="radio" class="ml_10" name="b" value="O">Don't know</br>

    // text input
    <input type='text' value='something' name="txt" />
</form>

我有这个表格,我试图获得好像没有在无线电组 1 中选择任何内容的值afalse其他无线电组相同)它们可以是任意数量的无线电组。

var str = $('form input:not([type="radio"])').serialize();
var str1 = $("form input[type='radio']").map(function () {
    return this.name + "=" + this.checked;
}).get().join("&");
if (str1 != "" && str != "") str += "&" + str1;
else str += str1;

输出是:txt=something&a=false&a=false&a=false&b=false&b=false&b=false

如您所见,我对组中的每个收音机都感到错误。但我只想a=false在没有选择的情况下。我怎样才能做到这一点?

小提琴:http: //jsfiddle.net/WcxwV/

编辑 :

预期输出:

txt=something&a=false&b=false

4

3 回答 3

0

我会做var str = $('form').serialize();然后将丢失的变量视为未选择。这就是预期用途。我没有理由手动将其设置为false.

于 2013-05-16T22:42:46.890 回答
0

尝试这个

$.fn.serializeObject = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
    if (o[this.name] !== undefined) {
        if (!o[this.name].push) {
            o[this.name] = [o[this.name]];
        }
        o[this.name].push(this.value || '');
    } else {
        o[this.name] = this.value || '';
    }
});
var $radio = $('input[type=radio],input[type=checkbox]',this);
$.each($radio,function(){
    if(!o.hasOwnProperty(this.name)){
        o[this.name] = '';
    }
});
return o;
};

代码示例

于 2016-08-03T03:37:22.007 回答
0

如果您刚刚添加了另一个已选中的隐藏单选按钮并且其值 =“”,那么您的问题将得到解决

<input type="radio" name="a" value="" checked style="display:none;">
于 2015-08-21T20:19:51.783 回答