2012-01-20 8 views
1

の場合この問題は多く発生しています。のは、私は次のHTMLを持っていたとしましょう:jQuery - ANY div内で選択した値が

<div id='step_1'> 

    <select name='select_1' id='choose'> 
    <option value='select one'>Select One</option> 
    <option value='yes'>Yes</option> 
    <option value='no'>No</option> 
    </select> 

    <select name='select_2' id='choose_again'> 
    <option value='select one'>Select One</option> 
    <option value='yes'>Yes</option> 
    <option value='no'>No</option> 
    </select> 

    <button id='submit'>button</button> 

</div> 

私は「選択」は、それらを警告する「ワンを選択」の値を持っている場合ので、私がやろうとしていることはfalseを返しされ、これらの多くを持っています。 jQueryはこれまでのとおりです:

$('#submit').click(function() { 
if ($('#step_1 select[value="select one"]').length() == 0) { 
    //succeed 
} else { 
    alert('Please select yes or no!'); 
    return false; 
} 

}); 

私は間違っていますか?事前にありがとう、私はこのウェブサイトが大好き! :)

答えて

1
$('#submit').click(function(e) { 
    var flag = true; 
    $('select').each(function(){ 
    if($(this).val() == "select one"){ 
     alert("please select a value in " + $(this).attr("name")); 
     flag = false; 
    } 
    }); 
    if(flag){ 
    alert('perfect');  
    }else{ 
     e.preventDefault(); 
    } 
}); 

例:http://jsfiddle.net/raj_er04/3kHVY/1/

クイック注:一度だけではなく、一度各 '選択1' あたりよりショーにアラートをしたい場合は、単に警告を動かします() else {ステートメント。この返答にもう一度感謝します!

+0

最初のものが「はい」または「いいえ」と言われ、2番目のものがまだ「1つを選択」と言われれば、正しいものを返します。もし誰かがその価値を持っていれば、「一つを選択してください」と返すべきです。私は非常に感謝しますが、助けてくれてありがとう! –

+0

私は第1のためにちょうどしました..私は第2のものを含んでいませんでした..なぜ.. ..私は更新します.. –

+0

答えを更新しました。 –

0

lengthがメソッドではないため、テストに失敗しました。それはプロパティです。 ()を削除します。デバッガを見ると、これに関する警告が表示されます。

また、セレクタは選択リスト自体ではなく、選択したオプションをチェックする必要があります。

http://jsfiddle.net/7PPs4/

$('#submit').click(function() { 
    $foo = $('#step_1 select option:selected[value="select one"]'); 
    alert($foo.length); 
}); 
1

あなたは$ .each()でこれを行うことができます:falseを返すことは欠落しているフィールドが発見されたかつての継続からのループを防ぐことができますことを

$('#step_1').find('SELECT').each(function() { 
    if($(this).val() === 'select one') { 
     alert('Please select yes or no!'); 
     return false; 
    } 
}); 

注意を。

+0

とても近いです!これは動作しますが、最初のものが選択されていても、2番目のものが選択されていなくても、アラートは最初にポップアップしますが、依然として送信します。言い換えれば、私は使用しているelse文を実行します。理性は最初に「あれば」何かを実行します。でも、助けてくれてありがとう! –

+0

さて、フラグを追加してそれに応じてアクションを処理するのはあなた次第です。アラートの代わりに、反復後の状態をテストするための変数を追加し、ループ外にアラートを移動することもできます。 – claviska

関連する問題