9

このコードを使用して、入力要素に焦点を合わせようとしています:

<input onblur="this.focus()" />

しかし、うまくいかないようです。

4

1 に答える 1

16

イベントで単に呼び出すと、フォーカスが復元さ.focus()れますblurが、実際にはテキスト カーソルはありません。これを処理するには、要素がフォーカスを失い、数ミリ秒でそれを返す必要があります。これに使用できますsetTimeout()

$('#inp').on('blur',function () { 
    var blurEl = $(this); 
    setTimeout(function() {
        blurEl.focus()
    }, 10);
});

これが実際のです。注意してください - 入力した後にテキストフィールドを離れることはできません =)

編集jQueryを使用しましたが、それがなくても簡単に実行できます。
EDIT2これが純粋なJSバージョンのフィドルです

<input type="text" id="elemID" />

<script type="text/javascript">
    document.getElementById('elemID').onblur = function (event) { 
        var blurEl = this; 
        setTimeout(function() {
            blurEl.focus()
        }, 10);
    };
</script>
于 2013-03-27T22:23:58.550 に答える