1

私はこの選択を持っています

<select name="clients[]" size="20" multiple="multiple" id="clients" style="min-width:275px;">
<option id="first">First</option>
<option id="second">Second</option>
<option id="third">Third</option> 
</select>

id = firstのときにこのアラートボックスを表示しようとしていますが、試しました

$(document).ready(function(){
    if($('#clients option:selected').val() == 'first'){
        alert('hi');
    }
});

しかし、何も表示されません...私は何を間違っているのですか

4

3 に答える 3

1

値はFirstであり、 ではありませんfirst。属性を指定しなかったためvalue、要素の内容がoption値として取得されます。

複数選択フィールドを使用することに注意してください。この場合、ブラウザーはページ上の要素を選択しません*firstため、選択がいつ変更されるかをテストするだけで意味があります。

Firstが選択された要素の 1 つであるかどうかを確認する必要があります。

$('#clients').change(function(){
      if($(this).children('option:selected').filter('#first').length) {
          alert('hi');
      }
});

デモ

もう 1 つのオプションは、ID の代わりに属性を適切に設定しvalue、値が値の配列にあるかどうかを確認することです。

HTML:

<option value="first">First</option>
<option value="second">Second</option>
<option value="third">Third</option> 

JS:

$('#clients').change(function(){
      if($.inArray("first", $(this).val()) != -1) {
          alert('hi');
      }
});

デモ


* :selected事前に一部の要素に属性を設定し、ページの読み込み時にテストを実行したい場合は.change()、select 要素を呼び出して変更イベントをトリガーするだけです。

于 2012-06-21T19:07:14.017 に答える
0

HTML で値の代わりにオプション ID を設定しました。また、jQuery で選択した値を見つけるには、select 要素の値を探すだけで済みます。

代わりにこれを行います:

<option value="first">First</option>
<option value="second">Second</option>
<option value="third">Third</option> 

$(document).ready(function(){
    if($('#clients').val() == 'first'){
        alert('hi');
    }
});

ポップアップをリアルタイムで表示したい場合は、次のようにします。

$(document).ready(function(){
  $('#clients').change(function(){
    if($(this).val() == 'first'){
      alert('hi');
    }
  });
});
于 2012-06-21T19:10:48.390 に答える
0

Firstこのコードは、ドキュメントの準備ができたときに選択が選択された場合、およびユーザーが選択を変更した場合にアラートをトリガーします

$(function(){
   checkSelection();

   $('#clients').change(function(){
      checkSelection();
   })

   function checkSelection(){
       var selectedOptions = $('#clients').val();

       if($.inArray('First',selectedOptions) != -1){
           alert('hi'); 
       }
   }  
})
于 2012-06-21T19:07:35.720 に答える