0

有没有办法将我在多个文本框中输入的每个值分配到 JavaScript 中的字符串数组中?

javascript

<script type="text/javascript">
  var ch[];

  function getAllValues() {
   alert('Entered');

   for(var i=0;i<5;i++) {
      ch.push(document.getElementsByName("src")[i]);
    };

 alert(ch);
}
</script>

主页.jsp

<form method="post" name="myform" onsubmit="getAllValues();">//
    <%
        for (int i = 0; i < 5; i++) {
    %>
    <input type="text" name="src"/ >
    <%
        }
    %>
    <input type="submit" value="submit">
</form>


var ch[];

这里有 5 个文本框。我想使用 JavaScript 将此处输入的值分配到一个数组中。

有谁知道如何做到这一点?我被困了2天。

4

6 回答 6

1
 <script>
 var str = "";
 function getAllValues() {
     var inputs = document.getElementsByTagName('input');
     for (i = 0; i < inputs.length; i++) {
         str += inputs[i].value + "  ";
     }
     alert(str);
 }
</script>
于 2013-05-14T09:57:37.580 回答
1

首先,为了避免让自己头疼,您可以考虑为您的输入提供唯一的名称/ID,如下所示:

<% for (int i = 0; i < 5; i++) { %>
    <input type="text" name="src<%= i %>" id="src<%= i %>"/ >
<% } %>

那么你的 JavaScript 会是这样的:

var inputs = document.querySelectorAll('input[type=text]'),
    inputLen = inputs.length,
    ch = [],
    i,
    updateVal = function () {
        var id = this.id.replace('src', '');
        ch[id] = inputs[id].value;
    };

for (i = 0; i < inputLen; i += 1) {
    ch[i] = inputs[i].value;
    inputs[i].onchange = updateVal;
}

你可以在这个演示中看到它有效。它使用输入的初始(空白)值填充ch数组,然后在每次更改输入时更新值。

于 2013-05-14T11:09:43.550 回答
0

为您的输入指定一个类,例如 inp。然后你可以写:

var result = $('.inp').map(function(m, i){ return i.value;})

结果将是值数组

于 2013-05-14T09:56:56.807 回答
0

您可以使用 jquery 来完成

var arr = new Array();
    $("input[name='src']").each(function () {
        arr.push($(this).val());
    })
于 2013-05-14T09:58:30.877 回答
0
for(i=0;i<5;i++) {
  ch.push(document.getElementsByName("src")[i]);
}

编辑

<% for(int i=0;i<5;i++) { %>      
  <input type="text" name="src" onBlur="srcBlur()" />
<% } %>

...

var src = new Array();

function srcBlur(this) {
  if(this == document.getElementsByName("src")[0]) src[0] = this.value;
  else if(this == document.getElementsByName("src")[1]) src[1] = this.value;
  else if(this == document.getElementsByName("src")[2]) src[2] = this.value;
  else if(this == document.getElementsByName("src")[3]) src[3] = this.value;

  if(src[0] && src[1] && src[2] && src[3] && src[4]) {
    for(i=0;i<5;i++) {
      ch.push(src[i]);
    }
  }
}
于 2013-05-14T10:02:13.803 回答
-1
var stringArr = [];

for (i = 0; i < 6; i++) {
    var element = document.createElement("input");
    element.setAttribute("type", "text");
    element.setAttribute("name", "textbox_" + i);
    element.setAttribute("id", "textbox_" + i);
    element.onkeyup = function () {
        keyPressFunc(this.id)
    };
    document.body.appendChild(element);
    stringArr.push("");
}

function keyPressFunc(elem) {
    var index = elem.split("_")[1];
    stringArr[index] = document.getElementById(elem).value;
    alert(stringArr);
}
于 2013-05-14T10:43:44.907 回答