获取先前选择的值或阻止选择默认值

时间:2013-01-21 12:06:56

标签: javascript jquery selection

是否可以在<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值。

3 个答案:

答案 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

DEMO

答案 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>

演示:http://jsbin.com/obeker/1/

参考:https://developer.mozilla.org/docs/HTML/Element/optgroup

答案 2 :(得分:0)

不,你不能这样做是因为在聚焦选择之后触发了更改事件,而不是在选择被更改之前触发。没有原生“onbeforechange”事件,但您可以在更改选择后删除空值,使其不再可用。

执行此操作的代码:

$('select').change(function (event) {
    $this = $(this);
    if ($this.val() !== '') {
        $this.children('option:first').remove();
    }
});