Вы можете использовать конструктор FormData
, передавая form
, для которого вам нужны пары ключ-значение. Если вы передадите form
в качестве аргумента, он автоматически будет содержать текущие пары ключ / значение формы (ключ - это имя элементов, а значение - их значение). Содержимое файла ввода также будет закодировано, что делает его идеальным для вызовов AJAX.
var formData = new FormData(document.getElementById("myForm"));
console.log(...formData);
<form id="myForm" name="myForm">
<div>
<label for="username">Enter name:</label>
<input type="text" id="username" name="username"value="John">
</div>
<div>
<label for="useracc">Enter account number:</label>
<input type="text" id="useracc" name="useracc" value="123456">
</div>
<input type="submit" value="Submit!">
</form>
Если вы хотите, чтобы все пары ключ / значение были внутри объекта, вы могли бы перебрать все элементы внутри формы с атрибутом имени, чтобы установить для свойства объекта значение, равное имени элемента, равному значению элемента.
var formMap = {};
var formElems = document.querySelectorAll('#myForm [name]');
for(var i = 0; i < formElems.length; i++){
var elem = formElems[i];
formMap[elem.name] = elem.value;
}
console.log(formMap);
//now you can get the values of the form element with a particular name like so:
//formMap["username"];->"John"
<form id="myForm" name="myForm">
<div>
<label for="username">Enter name:</label>
<input type="text" id="username" name="username"value="John">
</div>
<div>
<label for="useracc">Enter account number:</label>
<input type="text" id="useracc" name="useracc" value="123456">
</div>
<input type="submit" value="Submit!">
</form>