最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - jQuery 1.10.1 setting non existing value on select - Stack Overflow

programmeradmin3浏览0评论

Can someone explain this behavior:

<select id ="test">
       <option value="-1">---All---</option>
       <option value="1">first</option>
       <option value="2">second</option>
</select>

$('#test').val(200);

Using the jQuery 1.10.1 the value of the select is null, but using jQuery 1.9.1 the value is the first option.

jsFiddle

Can someone explain this behavior:

<select id ="test">
       <option value="-1">---All---</option>
       <option value="1">first</option>
       <option value="2">second</option>
</select>

$('#test').val(200);

Using the jQuery 1.10.1 the value of the select is null, but using jQuery 1.9.1 the value is the first option.

jsFiddle

Share Improve this question edited Apr 10, 2014 at 9:14 joker 9909 silver badges23 bronze badges asked Apr 10, 2014 at 9:07 gyosifovgyosifov 3,2234 gold badges28 silver badges42 bronze badges 1
  • In general, when something doesn't work correctly in an older version and works correctly in a newer version, "they fixed it" is a reasonable guess. :-) – T.J. Crowder Commented Apr 10, 2014 at 9:20
Add a ment  | 

3 Answers 3

Reset to default 6

Using the jQuery 1.10.1 the value of the select is null, but using jQuery 1.9.1 the value is the first option.

It's the fix to bug #13514, fixed in v1.10. Setting an invalid value should clear the select (which it does in v1.10+), not leave it at the default (first) option (v1.9).

I think you want to try,

$('#test').val(2);

none is selected (or default selected) if the drop-down value not exists.

Demo

The issue es in Blackberry 4.7 having attributes.value

The change in 1.9 version and 1.10 version are

jQuery 1.9.1 hook

jQuery.extend({
    valHooks: {
        option: {
            get: function( elem ) {
                // attributes.value is undefined in Blackberry 4.7 but
                // uses .value. See #6932
                var val = elem.attributes.value;
                return !val || val.specified ? elem.value : elem.text;
            }
        },

And jQuery 1.10 hook

jQuery.extend({
    valHooks: {
        option: {
            get: function( elem ) {
                // Use proper attribute retrieval(#6932, #12072)
                var val = jQuery.find.attr( elem, "value" );
                return val != null ?
                    val :
                    elem.text;
            }
        }

Read #6932 Blackberry 4.7: .val() on empty option fails

May be in jQuery 1.9.1 first is the default option if you provide any non-existing value while jQuery 1.10.1 don't select anything in such case.
You should pass value of option which you wan to select to val(). 200 is a not present as value for any option.

发布评论

评论列表(0)

  1. 暂无评论