2

これが私の問題です:

「Hello」と「World」の2つのオプションがあるselectタグがあります

html

<select>
<option> Hello </option>
<option> World </option>
</select>

IEでオプションを選択し、それが選択されたオプションになると、選択タグの外側のどこかをクリックするまで、青色の強調表示が残ります。(Firefoxではそうではありません)

そのため、オプションが選択されたときに要素からフォーカスを削除するスクリプトを作成しました。

脚本

$('select').change(function() {
        $(this).blur();

しかし、まだ1つの小さな問題が残っています。Helloを選択してからHelloオプションを取得すると、フォーカスが残り、青いハイライトが表示されます。しかし、helloを選択してからworldオプションを選択すると、すべてが機能します。選択メニューの場合、オプションが選択されたときに変更イベントが発生します!!!ただし、変更イベントをトリガーするには、オプションが前に選択されたものとは異なる必要があります。

同じオプションを再度選択しても、この青いハイライトが発生しない方法はありますか?

4

2 に答える 2

5

selectがidを持っていると仮定すると、selectオプションでクリックイベントを使用できますselect

$('option').click(function() {
    $('#select').blur();
});

デモ:http://jsfiddle.net/DJCe7/

編集

オプションが動的に追加される場合は、実行します(selectがidを持っていると仮定しますselect:)

$('#select').on('click', 'option', function() {
    $('#select').blur();
});

編集2

Enterキーを押して同じ結果を取得します。

$('#select').keydown(function(event) {
    // Enter pressed
    if(event.keyCode == 13) {
        $('select').blur();
    }
});

デモ:http://jsfiddle.net/DJCe7/10/

于 2013-03-04T10:55:55.517 に答える
-1

焦点を合わせてぼかしてみませんか?ただし、これがIEでどのように動作するかはわかりません。

$('select').focus(function() {
   $(this).blur();
});

http://jsfiddle.net/b26f5/

編集:愚かな私、あなたは実際にCSSでアウトラインを削除することができます。Javascriptを使用する必要はありません!

select, select:focus, select:active { outline: none; }

http://jsfiddle.net/b26f5/1/

于 2013-03-04T10:54:17.083 に答える