jQuery检查select字段是否已更改

时间:2015-05-29 11:41:31

标签: jquery

我想进行jQuery检查是否更改了select字段。如果更改,请设置警报消息(已更改),如果返回到默认值,则设置另一个警报消息(默认值)。

$('select').on('change',function () {
    var isDirty = false;

    $('select').each(function () { 
        var $e = $(this);      
        if (!$e[0].options[$e[0].selectedIndex].defaultSelected) {
        isDirty = true;
        }    
    });

    if(isDirty == true) { 
        alert("has changed");
    } else {
        alert("default value");          
    }
});

请告知这是否正确。

2 个答案:

答案 0 :(得分:4)

您不需要内部each循环。加$(this)[0]可以优化为this

$('select').on('change', function () {
        
    var isDirty = !this.options[this.selectedIndex].defaultSelected;

    if (isDirty) {
        alert("has changed");
    } else {
        alert("default value");
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="" id="">
    <option value="1">Label 1</option>
    <option value="2" selected>Label 2</option>
    <option value="3">Label 3</option>
    <option value="4">Label 4</option>
</select>

答案 1 :(得分:1)

我会做类似的事情:

HTML:

instanceof

使用Javascript:

<select data-default="one" id="the-select">
  <option>one</option>
  <option>two</option>
</select>