0

我想得到这个(一个对象中有四个键和值):

[{"sms":"Y","email":"Y","phone":"Y","oto":"Y"},{"sms":"N","email":"N","phone":"N","oto":"N"}]

但这是结果:

[{"sms":"Y"},{"email":"Y"},{"phone":"Y"},{"oto":"Y"},{"sms":"N"},{"email":"N"},{"phone":"N"},{"oto":"N"}]

这是我的代码:

var chkObj = {};
var chkArray = [];
var cntchk = 1;
$("tbody input").each(function(idx){
    var Nm = $(this).attr("name");
    this.checked ? chkObj[Nm] = 'Y' : chkObj[Nm] = 'N';
    cntchk++;
    if(cntchk = 4){
            chkArray.push(chkObj);
        chkObj = {};
        cntchk = 1;
    }
});
4

3 回答 3

1

你能把表格也给我们看一下吗?这给出了有限的回答范围。

但是,如果我猜对了,您有一个表单,其中包含以下字段 sms、电子邮件、电话,然后是 oto,对吗?

所以你必须做的是,你必须为四个输入做一次,而不是为每个输入做一次。这意味着您必须设置 chkObj['sms']、chkObj['email']、chkObj['phone'] 和 chkObj['oto'],然后执行 chkArray.push(chkObj)。

于 2013-05-17T07:11:07.260 回答
0

您错过了此表达式中的第二个等号: if(cntchk = 4){,因此没有比较,而是有一个赋值。将此更改为if(cntchk == 4){

于 2013-05-17T07:15:36.480 回答
0

如果条件,您错过了一个“=”登录。尝试这个:

var chkObj = {};
var chkArray = [];
var cntchk = 1;
$("tbody input").each(function(idx){
var Nm = $(this).attr("name");
this.checked ? chkObj[Nm] = 'Y' : chkObj[Nm] = 'N';
cntchk++;
if(cntchk **==** 4){
        chkArray.push(chkObj);
    chkObj = {};
    cntchk = 1;
}
});
于 2013-05-17T07:34:01.027 回答