开发者

Jquery Mulitple select field error

开发者 https://www.devze.com 2023-03-25 19:37 出处:网络
I have multiple select field each with multiple options. So, by using jquery to get the respective selected options content, I would be able to get the selected option content. However, this work for

I have multiple select field each with multiple options. So, by using jquery to get the respective selected options content, I would be able to get the selected option content. However, this work for the first select field. But, does not work for others. Others keep referencing the first select field selected options content, instead of it owns. Please guide me! Thanks!

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 to retrieve the selected content.

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

});


Just try this, it will give you the selected value.

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


First of all, you should be saying $(this) instead of $("this").

Second, $(event.target) is probably more appropriate here.

Third, using .children as in $(event.target).children(":selected") will get you what you want.


This is happening because you are referencing $("#module_dd").

You need to add another function and change that to $("#resource_dd") to get the other select field.


Problem code

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

You can't concat a selector string to a jQ collection object. You need to filter the option collection for those which are selected either by:

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

Or

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


Please see Eli Courtwright's answer, but in addition to that, you should do something like $("select") or $("#module_dd, #resource_dd") to target both select fields.

0

精彩评论

暂无评论...
验证码 换一张
取 消