2013-05-17 3 views
0

Я хочу, чтобы получить это (четыре клавиши & значения в одном объекте):Как я могу создать эту форму jsonArray?

[{"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; 
    } 
}); 
+0

Попробуйте http://jsfiddle.net/arunpjohny/4nncW/1/ –

ответ

0

Вы пропустили второй знак равенства в этом выражении: if(cntchk = 4){, поэтому вместо сравнения есть задание. Измените это на if(cntchk == 4){

+0

бога .. благослови вас .. я не могу найти пропавшего '=' thx guy – user2392738

1

Можете ли вы пожалуйста, покажите нам форму? Это дает ограниченный объем ответов.

Но если я правильно понял, у вас есть форма, в которой у вас есть следующие поля sms, email, phone, а затем oto, правильно?

Так что вам нужно сделать, а не делать это для каждого входа, вы должны сделать это один раз для четырех входов. Значит, вам нужно установить chkObj ['sms'], chkObj ['email'], chkObj ['phone'], а затем chkObj ['oto'], а затем chkArray.push (chkObj).

+0

поле ввода только тип = 'флажок' 40 checkboxs в HTML код – user2392738

+0

ТНХ для anwser :) – user2392738

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; 
} 
}); 
+0

thx для ответа :) – user2392738

Смежные вопросы