2017-04-21 7 views
1

私はすべてのフォームフィールドをループすることができますが、値は最初のフォームフィールドのみに保存されます。このため、コンソールには最初のフォームフィールドの7回の繰り返しが表示されます一方、私はそれを検証してもらうために、すべてのフォームフィールドに対して1つ1つずつ来たいと思っています。前もって感謝します。すべてのフォームフィールドをループする

$('formsection[name="AUDIT REPORT"]').find('input,select').each(function() { 
    hi = []; 
    hi = $('formsection[name="AUDIT REPORT"]').find('input,select').val(); 
    console.log(hi); 

}); 
+0

'$(this).val()'を使用してください。 – Tushar

+0

Typo there? 'フォームセクション'? ':input'セレクタを使います。 – Tushar

+0

私は誤植だと思っていませんが、感謝してくれました。 :) –

答えて

2

はまずformsectionが有効なHTML要素ではないとして、セレクタでformsectionの間にスペースがあるはずです注意してください。

問題自体は、each()ハンドラ関数内で同じセレクタを使用していることが原因です。結果のjQueryオブジェクトには要素のコレクションが含まれているため、val()を呼び出すと、セットの最初の要素からのみ読み込まれます。期待どおりの配列を返しません。

これを修正するには、反復で現在の要素を参照するためにthisキーワードを使用します。

$('form section[name="AUDIT REPORT"] :input').each(function() { 
    var hi = $(this).val(); 
    console.log(hi); 
}); 

$('form section[name="AUDIT REPORT"]').find('input,select').each(function() { 
    var hi = $(this).val(); 
    console.log(hi); 
}); 

はまた:inputセレクタもfind()を使用せずに、あなたのニーズを満たすことができることに注意してください

+2

私たちは同様に考える: – Tushar

+0

ありがとう@ロリーMcCrossan.A非常によく説明された答えが常に役立ちます。 –

+0

@SHIKHARSINGH問題はない、助けてうれしい –

関連する問題