是否可以在<select>
获取之前选择的值或以某种方式阻止默认值?例如我有
<select id="select_site" name="sites" selectedindex="0">
<option value="">Please select site</option>
<option value="4">first</option>
<option value="5" selected="selected">second</option>
<option value="8">third</option>
</select>
因此,如果选择了具有空值的选项,我需要恢复以前选择的second
值。
答案 0 :(得分:1)
您可以将更改事件处理程序绑定到元素,并将新值存储在变量中。如果值为空字符串,请将其设置为变量中的任何内容:
$('#select_site').change(function() {
if (this.value === '') {
this.value = $(this).data('previous_value');
}
else {
$(this).data('previous_value', this.value);
}
}).triggerHandler('change'); // <- trigger change event to get initial value
答案 1 :(得分:1)
不需要js:
<select id="select_site" name="sites" selectedindex="0">
<optgroup label="Please select site">
<option value="4">first</option>
<option value="5" selected="selected">second</option>
<option value="8">third</option>
</optgroup>
</select>
答案 2 :(得分:0)
不,你不能这样做是因为在聚焦选择之后触发了更改事件,而不是在选择被更改之前触发。没有原生“onbeforechange”事件,但您可以在更改选择后删除空值,使其不再可用。
执行此操作的代码:
$('select').change(function (event) {
$this = $(this);
if ($this.val() !== '') {
$this.children('option:first').remove();
}
});