2012-08-30 7 views
10

私はそうのような複数の入力フィールドがあります。必要に応じてjQueryを使用して配列の要素から値を取り出す方法は?

<input type="text" name="card[]"> 
<input type="text" name="card[]"> 
<input type="text" name="card[]"> 

ユーザーは、これらのフィールドを追加または削除することができ、したがって、フィールドの名前が配列であるが。 は、配列の長さを取得するには、これが正常に動作します:

var n = $("input[name^= 'card']").length; 

にはどうすれば配列から値を読み取ることができますか?

私は動作しませんでした、これを試してみた

var n = $("input[name^='card']").length; 
var array = $("input[name^='card']"); 
for(i=0;i<n;i++) 
{ 
card_value= array[i].val(); 
alert(card_value); 
} 

これはどちらか動作しませんでした:

var n = $("input[name^='card']").length; 

for(i=0;i<n;i++) 
{ 
card_value= $("input[name^='card["+i+"]']").val(); 
alert(card_value); 
} 

私はこの配列から値を読み取ることができますどのように? ヘルプ!

あなたが使用する必要があります
+0

少し、どのような値あなたが読みたいと思うようにしてください手の込んだ、ユーザが実際に中に入力した値は、 'input'?そして、あなたは何を取りたいのですか? –

+0

try $(input.attr( "[name^= 'card'])))。長さ; – Wearybands

答えて

11

card_value= array.eq(i).val(); //gets jquery object at index i 

または

card_value= array[i].value; //gets dom element at index i 
+0

私のために働いていない –

+0

@scrappedcolaどのように私は同じ値を防ぐことができますか? –

+0

@FreddySidauruk「同じ価値を妨げる」とはどういう意味ですか?それは私が答えていた質問とは関係ありません。一般的に、ifブロックを使用して値と配列の内容をチェックします。質問がある場合は関連する質問のサイトを検索し、見つからなければ独自の質問を作成します。 – scrappedcola

0

用途:http://jsfiddle.net/xH79d/

var n = $("input[name^='card']").length; 
var array = $("input[name^='card']"); 

for(i=0; i < n; i++) { 

    // use .eq() within a jQuery object to navigate it by Index 

    card_value = array.eq(i).attr('name'); // I'm assuming you wanted -name- 
    // otherwise it'd be .eq(i).val(); (if you wanted the text value) 
    alert(card_value); 
} 

6

jQueryコレクションは、イテレータのwiに内蔵されていますアイテムけれどもあなたができるだけのループ

$("input[name^='card']").each(function() { 
    console.log($(this).val()); 
} 
0

.each番目

$("input[name^='card']").each(function() { 
    console.log($(this).val()); 
}); 
0

あなたの構文が正しくありません。

card_value = $(array[i]).val();又はcard_value = array[i].value;

配列[i]が(何らかの理由で)jQueryオブジェクトではありません。

ブラウザのコンソールを確認すると、このような場合に役立ちます。

11

使用マップ機能

var values = $("input[name^='card']").map(function (idx, ele) { 
    return $(ele).val(); 
}).get(); 
+1

ヒント:関数内で '$(this) 'を使用し、パラメータidxとeleをドロップすることもできます。また、['.get()'](http://api.jquery.com/get/#get2)は、['.map()']によって返されるjQueryオブジェクトから実際の配列を抽出するためのものです。 //api.jquery.com/map/)。 @Robschのコメントのおかげで – robsch

+0

、。getは実際には重要です。返される結果はjavascript配列ではありません。 – Five

0

arrayを読むために、あなたも利用できるjQueryの "each" 方法:

$.each($("input[name^='card']"), function(index, val){ 
    console.log(index + " : " + val); 
}); 

ボーナス:あなたも、このメソッドを介してオブジェクトを読み取ることができます。

source

関連する問題