2011-01-18 11 views
1

を表示するとバグが私はパターンがある複数の選択メニューがあります。jqueryのオプションを選択

<select name='device$num' id='device$num' size='8' multiple='multiple' >" 

を私はときに、これらの選択の変更のいずれかの値を表示したいです。

私はこれを試しましたが、警告から未定義の値が得られることがあります。なにが問題ですか?

<script> 
    \$("select[id^=device]").change(function() { 
     \$("#paramselection").html(" "); 
     \$("#voltageselection").html(" "); 

     // IF THE DATA HAS CHANGED, FIND OUT WHICH DATA SECTIONS ARE STILL VALID 

     \$("select[id^=device] :selected").val(function(index, value) { 
      alert(value); 
     }); 
    }); 
</script> 

もう1つの質問ですが、id = = device \ d +申し訳ありませんが、私が選択したテキストを取得する

答えて

1

すべての値

devicesのセットでは、をselected-selector(docs)とし、選択した<option>の要素を取得します。

map()(docs)を使用して値を含むjQueryオブジェクトを作成し、次にget()(docs)を使用して、オブジェクトから配列を取得します。

// cache all the "device" elements as you assign the "change" handler 
var devices = $("select[id^=device]").change(function() { 
    $("#paramselection").html(" "); 
    $("#voltageselection").html(" "); 

     // from the "devices" variable, find selected options, and 
     // create an Array of the values 
    var selected = devices.find('option:selected') 
          .map(function(){ 
           return this.value; 
          }).get(); 

    alert(selected); // will alert an array of the selected values 
}); 
+0

こんにちはコーディングを試して、それは1つのセクションで動作します。しかし、私は現在、ユーザーによって選択されているすべての値を警告したいと思います...私はvar selected = $( "select [id^device]")を試しました。しかし、これは動作しません.. – Gordon

+0

@ゴードン:私は誤解しました。私は数分で更新します。編集:回答が更新されました。 – user113716

+0

patrickにも感謝しています。例を学ぶことができるリンクにも感謝しています。 – Gordon

1
はこれにアラートを変更

Perlでもっと慣れています:

device要素をキャッシュし、冗長DOMの選択を回避し、選択された取得するためにそれを使用するために
\$("select[id^='device'] option:selected").each(function() { 
    alert($(this).text()); 
    }); 
+0

セレクタには引用符は必要ありません。 – user113716