Обход всех инпутов в форме.
Всем добрый день!
Помогите решить задачу: нужно средствами голого 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, время: 17:37. |