Обход всех инпутов в форме.
Всем добрый день!
Помогите решить задачу: нужно средствами голого js (без использования библиотек, таких как jQuery) обойти все инпуты в форме и запихнуть их значения в массив. Пример: function getData() { data = new array(); //отбор value для всех инпутов. //конечный массив должен быть таким: //data = {'n1':value1,'n2':value2...}; return data; } <form> <input type="text" name="n1"> <input type="text" name="n2"> <input type="text" name="n3"> <input type="text" name="n4"> <button onclick="getData()"> </form> Заранее спасибо! |
HaseProgram,
а может по тихоньку сами ? нашли элементы нужные http://learn.javascript.ru/searching-elements-dom обошли их циклом http://learn.javascript.ru/while-for собрали name и value и заполнили обьект data ваша строка 5, а не массив строка 2 Цитата:
пробуйте - ошибётесь поправят. |
<form id="form"> <input type="text" name="n1" value="abc"> <input type="text" name="n2" value="cde"> <input type="text" name="n3" value="bla"> <input type="text" name="n4" value="xyz"> <button onclick="getData(); return false;">Get Data</button> </form> <script> function serializeForm(form) { var elements = Array.prototype.slice.call(form.elements); var data = {}; elements.forEach(function(element){ if (element.tagName.toLowerCase() == 'input' && element.name) data[element.name] = element.value; }); return data; } function getData() { var data = serializeForm(document.forms.form); alert(Object.keys(data).map(function(key){return key + ':' + data[key]})); return false; } </script> Не будет работать в старых браузерах. Хотя это легко исправить. |
Цитата:
|
Часовой пояс GMT +3, время: 13:18. |