2011-08-03 8 views
0

私は複数のオプションを持つ複数の選択フィールドがあります。 jqueryを使用して選択したオプションのコンテンツを取得することで、選択したオプションのコンテンツを取得できます。ただし、これは最初の選択フィールドで機能します。しかし、他人のために働かない。他の人は、所有しているのではなく、選択した最初の選択項目の内容を参照し続けます。私を案内してください!ありがとう!Jquery Mulitple選択フィールドエラー

My Select fields 

<select id="resource_dd" name="resource_dd"> 
    <option selected="selected" value="nil1">No resources.</option> 
    <option value="1">Week1</option> 
    <option value="2">Resource1</option> 
</select> 


<select id="module_dd" name="module_dd"> 
    <option selected="selected" value="nil2">No restriction.</option> 
    <option value="1">IT1234</option> 
    <option value="2">IT2345</option> 
</select> 

選択したコンテンツを取得するためのJquery。

$("#module_dd").change(function (event) { 
    var option = $("this").children(); 
    var module_id = $(option+":selected").val(); //module_id get 'nil1' as content instead of nil2 

}); 
+1

このコードでは多くの問題があります...どの回答を受け入れるかにかかわらず、すべての回答を読んで適用してください。 – JAAulde

答えて

2

これを試してみると、選択した値が表示されます。

$("#module_dd").change(function (event) { 
    var module_id = $(this).val(); 
}); 
+0

+1実際、過度に複雑にする必要はありません。しかし、これは縮小されたケースであり、select要素に関して他のことをしていると私は思っています。いずれにせよ、あなたが望むものがその価値であるならば、どのオプションが選択されているかを知る必要はないということは正しいです。 – JAAulde

0

問題のコード

var option = $("this").children(); 
var module_id = $(option+":selected").val(); 

あなたはjQのコレクションオブジェクトにセレクタ文字列をCONCATすることはできません。あなたが$("#module_dd")を参照しているので、これが起こっている

var option = $(this).children(":selected"); 

それとも

var option = $(this).children(); 
var module_id = option.filter(":selected").val(); 
0

:あなたは、どちらかによって選択されるもののためのオプションのコレクションをフィルタリングする必要があります。

$("#resource_dd")に別の機能を追加して、他の機能を追加する必要があります。selectフィールド。

+0

'#module_id'は、値が' nil2'のオプションを持っています。私はそれが彼の後ろの値だと信じています... – JAAulde

1

まず、$("this")の代わりに$(this)とする必要があります。

第2に、ここではおそらく$(event.target)が適切でしょう。

第3に、$(event.target).children(":selected")のように.childrenを使用すると、必要なものが得られます。

+0

+1 LOL、私は '' this "' 「これ」。 – JAAulde

0

イーライCourtwrightの回答を参照してください、それに加えて、あなたは両方のselect分野を対象とする$("select")または$("#module_dd, #resource_dd")ような何かを行う必要があります。