获取特定表单的所有元素

man*_*j82 47 javascript

function getInputElements() {
    var inputs = document.getElementsByTagName("input");
}
Run Code Online (Sandbox Code Playgroud)

上面的代码获取了input具有多个表单的页面上的所有元素.如何input使用纯JavaScript 获取特定表单的元素?

Tim*_*own 111

document.getElementById("someFormId").elements;
Run Code Online (Sandbox Code Playgroud)

此集合还将包含<select>元素,但您可能需要它.

  • @Andrew:我的意图是"someFormId"是`<form>`元素的ID,而不是输入.`elements`是表单元素的属性; 它是表单中元素的集合.请参阅https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.elements (2认同)

Edu*_*imo 23

如果您想要这些值,可以使用FormData :

var form = document.getElementById('form-name');
var data = new FormData(form);
for (var [key, value] of data) {
    console.log(key, value)
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,“FormData”不会包含禁用或未选中的元素。 (2认同)

esv*_*sen 20

document.forms["form_name"].getElementsByTagName("input");
Run Code Online (Sandbox Code Playgroud)

  • 只要没有选择或textareas ;-) (54认同)
  • 我更喜欢`document.forms["form_name"].getElementByClassName("myClass")` (3认同)

小智 17

你们都在专注于问题中的"获取"这个词.尝试任何形式的'elements'属性,这是你可以迭代的集合,即你编写自己的'get'函数.

例:

function getFormElelemets(formName){
  var elements = document.forms[formName].elements;
  for (i=0; i<elements.length; i++){
    some code...
  }
}
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.


epa*_*llo 8

var inputs = document.getElementById("formId").getElementsByTagName("input");
var inputs = document.forms[1].getElementsByTagName("input");
Run Code Online (Sandbox Code Playgroud)

2020 年更新:

var inputs = document.querySelectorAll("#formId input");
Run Code Online (Sandbox Code Playgroud)


Nav*_*ron 8

也可以使用这个:

var user_name = document.forms[0].elements[0];
var user_email = document.forms[0].elements[1];
var user_message = document.forms[0].elements[2];
Run Code Online (Sandbox Code Playgroud)

表单的所有元素都通过Javascript存储在数组中.这将从第一个表单中获取元素,并将每个值存储到唯一变量中.


nik*_*ong 8

松散相关,但如果您想获取对象中的所有表单项,您可以:

Object.fromEntries(new FormData(document.querySelector('form')).entries())
Run Code Online (Sandbox Code Playgroud)

哪个产量

{
   email: "thao@le.com",
   password: "mypassword"
}
Run Code Online (Sandbox Code Playgroud)


Ars*_*ikh 6

简单的表格代码

    <form id="myForm" name="myForm">
        <input type="text" name="User" value="Arsalan"/>
        <input type="password" name="pass" value="123"/>
        <input type="number" name="age" value="24"/>
        <input type="text" name="email" value="johndoe@test.com"/>
        <textarea name="message">Enter Your Message Her</textarea>

    </form>
Run Code Online (Sandbox Code Playgroud)

Javascript代码

//Assign Form by Id to a Variabe
    var myForm = document.getElementById("myForm");
    //Extract Each Element Value
    for (var i = 0; i < myForm.elements.length; i++) {
    console.log(myForm.elements[i].value);
    }
Run Code Online (Sandbox Code Playgroud)

JSFIDDLE:http://jsfiddle.net/rng0hpss/


Jos*_*hua 5

用这个

var theForm = document.forms['formname']
[].slice.call(theForm).forEach(function (el, i) {
    console.log(el.value);
});
Run Code Online (Sandbox Code Playgroud)

el 代表特定的表单元素。使用它比 foreach 循环更好,因为 foreach 循环还返回一个函数作为元素之一。然而,这只返回表单的 DOM 元素。


小智 5

试试这个以获取所有表单字段。

var fields = document['formName'].elements;
Run Code Online (Sandbox Code Playgroud)


aab*_*ith 5

首先,获取所有元素

const getAllFormElements = element => Array.from(element.elements).filter(tag => ["select", "textarea", "input"].includes(tag.tagName.toLowerCase()));
Run Code Online (Sandbox Code Playgroud)

其次,和他们做点什么

const pageFormElements = getAllFormElements(document.body);
console.log(pageFormElements);
Run Code Online (Sandbox Code Playgroud)

如果你想使用表单,而不是整个页面,你可以这样做

const pageFormElements = getAllFormElements(document.getElementById("my-form"));
console.log(formElements);
Run Code Online (Sandbox Code Playgroud)

  • 我不知道为什么这没有被投票。非常简洁的方法来获取所有表单元素,包括特定表单的选择和文本区域。 (2认同)