2012-01-18 25 views
23

3つのdivがあり、それぞれに2つの入力フィールドと次のボタンがあります。 jQueryのスニペットを書いて、次のボタンがクリックされたときに、ボタンと同じdiv内のすべての入力フィールドを確実にチェックします.nullではありません。すべての入力フィールドがjQueryで記入されていることを確認してください

は、私はあなたが減らすためにfilterを使用することができ

http://jsfiddle.net/xG2KS/1/

答えて

52

...運が、その間違っている、唯一の私は、オンラインで関連情報を見つける傾ける特定のイム100%で、次の試してみました

$(".next").click(function() { 
    var empty = $(this).parent().find("input").filter(function() { 
     return this.value === ""; 
    }); 
    if(empty.length) { 
     //At least one input is empty 
    } 
}); 
:空であり、そしてそれだけのものにすべての input要素の集合は残るものの lengthプロパティをチェック

上記のコードで空の定義が空の文字列であることに注意してください。余白としても空白を扱う場合は、比較する前に値をトリムすることができます。

filter関数内でthisをjQueryに渡す必要はありません。 DOM要素自体にはvalueというプロパティがあり、valではなくアクセスする方がはるかに高速です。

ここにはupdated fiddleがあります。

+1

ああ、素晴らしい、ありがとう! – Liam

+0

問題はありません。私は助けてくれてうれしいです:) –

+0

これを入力テキストのフォームに使用して選択するにはどうすればいいですか? –

6
$('.next').click(function() { 
    var emptyInputs = $(this).parent().find('input[type="text"]').filter(function() { return $(this).val() == ""; }); 
    if (emptyInputs.length) { 
     alert('Fail!'); 
    } 
}); 
+0

ありがとう@garvey !,ある入力が空であれば、ループに反して1つのアラートを投げますか? – Liam

+0

はい、私の編集を参照してください。ループなし。 – pltvs

+0

どうすれば選択もできますか? –

0
$('.next').click(function() { 
    var inputs = $(this).parent().find('input[value=""]'); 
    if (!inputs.length) { 
     // you have empty fields if this section is reached 
    } 
}); 
+0

これは、空でない入力があっても空の入力があると言うでしょう。なぜなら、プロパティではなく、 'value' *属性*を見ているからです。 –

+0

私は従いませんか?私はjQueryに精通していないので、説明してもらえますか? –

+3

属性セレクタを使用して、 'value'属性が空の文字列と等しい要素を見つけました。 'value' *属性*は要素自体に定義されたものです:' '。問題の 'input'要素のどれも' value'属性を持たないので、あなたのコードは常にそれらがすべて空であると言います。 –

関連する問題