Javascript:获取所有表单输入值作为数组

时间:2019-11-09 22:44:23

标签: javascript html forms

我正在尝试使用NumberBox的onEnter()函数来动态更改formBox。

如果有人输入3作为输入值,我需要它显示3个带有准确输入框的表格。我知道如何从输入框中获取值并在下面显示表格的数量。

我的问题是我无法弄清楚如何用一个提交按钮将所有值存储到一个数组中,例如[[1,1,1,1,1],[2,2,2,2, 2],等等]。

一旦我弄清楚了,我应该可以自行输出这些值。最终目标是使用这些值在另一个页面上多次显示该列表。我希望将其完全保留在Javascript中。我相信可以做到,但是我遇到了障碍,需要一些帮助。

function clickMe() {
  var input1 = document.forms["formBox"]["info1"].value;
  var input2 = document.forms["formBox"]["info2"].value;
  var input3 = document.forms["formBox"]["info3"].value;
  var input4 = document.forms["formBox"]["info4"].value;
  var input5 = document.forms["formBox"]["info5"].value;
  var inputArr = [input1,input2,input3,input4,input5];

  document.getElementById("info1").innerHTML = inputArr[0];
  document.getElementById("info2").innerHTML = inputArr[1];
  document.getElementById("info3").innerHTML = inputArr[2];
  document.getElementById("info4").innerHTML = inputArr[3];
  document.getElementById("info5").innerHTML = inputArr[4];
  console.log(inputArr);
}
function onEnter() {
  var qNumber = document.getElementsByName("numberBox")[0].value;
  if(event.keyCode == 13) {
      var qID = document.getElementById("numBox");
      var submitBtn = document.getElementById("submitButton");
      var a = qNumber - 1;
      var b = 0;
      while (b < a) {
          var formClone = document.getElementById("formBox");
          var listClone = formClone.cloneNode(true);
          var text =b+2;
          listClone.id = "formBox" + text;
          console.log(listClone.id);
          document.getElementById("forms").append(listClone);
          b++;
          console.log(b);
      }
      return qID.parentNode.removeChild(qID);
  }
  return qNumber;
}
input{
    display: block;
}
<div id="forms">
    <span id="numBox">
    <label for="numberBox">Number of Forms</label>
    <input type="number" name="numberBox" onkeydown="onEnter()" />
    </span>
    <form id="formBox" name="formBox" action="#" onsubmit="return false;">
        <label for="info1">Input 1:</label>
        <input type="text" name="info1" />
        <label for="info2">Input 2:
        </label>
        <input type="text" name="info2" />
        <label for="info3">Input 3:
        </label>
        <input type="text" name="info3" />
        <label for="info4">Input 4:
        </label>
        <input type="text" name="info4" />
        <label for="info5">Input 5:
        </label>
        <input type="text" name="info5" />
    </form>
</div>
<input type="submit" value="Submit" id="submitButton" onclick="clickMe()" />

<div id="content">
    <span id="info1">input1</span>
    <br/>
    <span id="info2">input2</span>
    <br/>
    <span id="info3">input3</span>
    <br/>
    <span id="info4">input4</span>
    <br/>
    <span id="info5">input5</span>
</div>

2 个答案:

答案 0 :(得分:1)

您可以查询表单中的所有输入元素,将它们的值映射到另一个数组。

[...document.forms["formBox"].getElementsByTagName("input")].map(input => input.value)

答案 1 :(得分:0)

我能够遍历所有输入,感谢@ mike-ezzati和@metamorph_online指出正确的方向。这是我这样做的方式,并且我意识到我需要从onEnter()函数中获取值。我最终使用localStorage来完成此操作。

    function clickMe() {
        var q = localStorage.getItem("qNumber");
        console.log(q);
        var inputNow = [];
        var allInputs = [];
        var inputNow = document.getElementsByTagName("input");
        for(x=0; x < inputNow.length; x++) {
            allInputs.push(inputNow[x].value);
             console.log(allInputs);
        }
    localStorage.clear();
    }