获取将在动态生成的输入中键入的值的最佳方法是什么?

时间:2019-03-11 18:52:49

标签: javascript

我有一个可以动态创建输入的表单。

例如:

<form>
    <input name="item[0][name]">
    <input name="item[1][name]">
</form>

01是商品的ID。

请注意,01可以是1549,甚至可以是5208542

既没有订单也没有排序,而且只有两个项目也没有限制。

问题是:

“在将它们发送到后端之前,获取在这些输入中键入的值的最佳方法是什么?”

我能想到的唯一方法是在生成表单时添加id,但这似乎一点也不优雅。

如果您找不到更好的方法,那将很可爱=)

2 个答案:

答案 0 :(得分:2)

您可以使用document.querySelectorAll()和属性选择器

function submit() {
  let inputs = document.querySelectorAll('input[name*=item]');
  let values = Array.from(inputs).map(({value})=>value);
  console.log(values);
}
<form>
    <input name="item[0][name]">
    <input name="item[1][name]">
</form>

<button onclick="submit()">Sumbit</button>

答案 1 :(得分:1)

您可以使用HTMLFormElement.elements属性。

const formInputs = document.getElementById('a-form').elements
const dataObject = {}

for (let i = 0; i < formInputs.length; i++) {
  dataObject[formInputs[i].name] = formInputs[i].value
}

console.log(dataObject)
<form id="a-form">
  <input type="text" name="item[0][name]" />
  <input type="text" name="item[1][name]" />
  <input type="text" name="item[2][name]" />
</form>