我想进行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");
}
});
请告知这是否正确。
答案 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>