0

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

したがって、null値でオプションを選択した場合、以前に選択したsecond値を復元する必要があります。

4

3 に答える 3

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

デモ

于 2013-01-21T12:14:05.287 に答える
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

于 2013-01-21T12:18:50.703 に答える
0

いいえ、選択が変更される前ではなく、選択がフォーカスされた後に変更イベントが発生するため、これを行うことはできません。ネイティブの「onbeforechange」イベントはありませんが、選択が変更されたら空の値を削除して、使用できなくなるようにすることができます。

これを行うためのコード:

$('select').change(function (event) {
    $this = $(this);
    if ($this.val() !== '') {
        $this.children('option:first').remove();
    }
});
于 2013-01-21T12:09:50.503 に答える