7

JQueryで、なぜinformation Undefined次のコードを取得するのですか?

JS-右側の部分は未定義です

var s = $("[name='CountAnswer']").val();

HTML

<input style="width:150px" type="text" id="CountAnswer_1_" name="CountAnswer[1]">
<input style="width:150px" type="text" id="CountAnswer_2_" name="CountAnswer[2]">
<input style="width:150px" type="text" id="CountAnswer_3_" name="CountAnswer[3]">
4

3 に答える 3

7

等式比較を使用していますが、ワイルドカードを使用する必要があります。おそらくjクエリ属性はで始まります ^が、上記のステートメントは最初に一致した要素の値を示します。それぞれを使用して、すべての要素を反復処理できます。

var s = $("[name^='CountAnswer']").val();

each()を使用して反復します。

ライブデモ

$("[name^='CountAnswer']").each(function(){
   alert($(this).val());
   //or
   alert(this.value);
});

OPコメントに基づいて編集します。すべての一致の値を取得します。

ライブデモ

strValues = $("[name^='CountAnswer']").map(function(){  
   return this.value;
}).get().join(',');
于 2013-03-25T10:45:12.740 に答える
5

名前が==の要素がないためですCountAnswer。たとえば、特定の名前を指定する必要があります。

$("[name='CountAnswer[1]']").val();

または、「Begins With」ワイルドカード()を使用して、名前が:^で始まるすべての要素を照合することもできます。CountAnswer

$("[name^='CountAnswer']").val();

もちろん、これは一致したセットの最初の要素の値のみを返します。これは、の動作であるためですval()

于 2013-03-25T10:45:16.947 に答える
3

jsFiddleデモ

文字列値の配列を設定してから、あるイベントでjquery部分一致セレクター「startswith」(^)を使用して、名前で示された入力のリストを反復処理する必要があります。

デモhtml:

<input value="a" style="width:150px" type="text" id="CountAnswer_1_" name="CountAnswer[1]">
<input value="b" style="width:150px" type="text" id="CountAnswer_2_" name="CountAnswer[2]">
<input value="c" style="width:150px" type="text" id="CountAnswer_3_" name="CountAnswer[3]">
<br><input type="button" id="b" value="show string list" /><div id="console"></div>

デモjs:

var stringList = [];
$('#b').click(function(){
 stringList = [];
 $("[name^='CountAnswer']").each(function(){
  stringList.push(this.value);
 });
 var c = $("#console");
 for( var i = 0; i < stringList.length; i++ ){
    var d = $("<div>");
    d.html(stringList[i]);
    c.append(d);
 }
 console.log(stringList);
});
于 2013-03-25T10:53:58.630 に答える