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>

home.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

まず、頭痛の種を避けるために、次のように、入力に一意の名前/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
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 に答える
0

inp など、入力にクラスを指定します。次に、次のように記述できます。

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

結果は値の配列になります

于 2013-05-14T09:56:56.807 に答える