2014-10-01 2 views
0

У меня есть этот HTMLПолучение JSON из элементов JQuery?

<select class="form-control" required name="article"> 
    <option value="Coca Cola">Coca Cola</option> 
</select> 
<input class="form-control number-input" value="" name="qty" type="text"> 


<select class="form-control" required name="article"> 
    <option value="Jupi">Jupi</option> 
</select> 
<input class="form-control number-input" value="" name="qty" type="text"> 


<select class="form-control" required name="article"> 
    <option value="Fanta">Fanta</option> 
</select> 
<input class="form-control number-input" value="" name="qty" type="text"> 

И

JS

var invoiceNumber = 1; 

var articles = $('[name~=article]').map(function() { 
    return $(this).val() 
}).get(); 
var qty = $('[name~=qty]').map(function() { 
    return $(this).val() 
}).get(); 

Что мне нужно, чтобы получить новый JSON, который будет выглядеть следующим образом

var invoicesGet = [{ 
    "invoice": "1", 
    "article": "Coca Cola", 
    "qty": "2042" 
}, { 
    "invoice": "1", 
    "article": "Jupi", 
    "qty": "232" 
}, { 
    "invoice": "1", 
    "article": "Fanta", 
    "qty": "45" 
}] 

Это работает скрипку, что я есть сейчас: http://jsfiddle.net/b33kvd3L/

Я думаю, что я получил все значения элементов, порядок будет так, но я не знаю, как объединить все это JSON к одному, и добавить INVOICENUMBER? я не знаю, сколько inouts будут добавлены они dinamicly добавить

+0

Что об этой теме http://stackoverflow.com/questions/11338774/serialize-form-data-to-json как так http://jsfiddle.net/b33kvd3L/ 1 / – Robert

ответ

1

сделать массив объектов после того, как ваши JS:

var invoicesGet = []; 
for (var i in articles) { 
    invoicesGet.push({ 
     invoice: invoiceNumber, 
     article: articles[i], 
     qty: qty[i] 
    }); 
} 

Обновленный живой код: http://jsfiddle.net/b33kvd3L/3/

выход Produce как: [{"invoice":1,"article":"Coca Cola","qty":"12"},{"invoice":1,"article":"Jupi","qty":"34"},{"invoice":1,"article":"Fanta","qty":"56"}]

0

Найдите следующий вход qty с использованием .next() и верните объект, а затем преобразуйте его в JSON.

var articles = $('[name~=article]').map(function() { 
    var qtyVal = $(this).next("[name=qty]").val(); 
    return { 
     invoice: invoiceNumber, 
     article: $(this).val(), 
     qty: qtyVal 
    }; 
}).get(); 

JSFiddle: http://jsfiddle.net/b33kvd3L/16/

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