【JavaScript】onblurのあとfocusとselectが効かない

inputタグにonblurで入力チェックしたあと、入力したテキストボックスにフォーカスを戻したいときにハマったメモ。

IEだと普通にobj.focus()をやれば戻れるけど、FirefoxとかGoogle ChromeとかSafariだと戻らない。

そんなときはsetTimeoutを使えばいいらしい。

サンプルコード(数値チェックのisNumberは独自に定義)

<input type="text" onblur="txtCheckNumber(this)" />

function txtCheckNumber(objElement)
{
    var objJquery = $(objElement);
    if (!isNumber(objJquery.val())) {
        alert("数値を入力してください。");
        setTimeout(function(){
            objJquery.focus();
            objJquery.select();
        }, 1);
    }
}

jQueryオブジェクトに変換しているけど、DOMエレメントのまま

objElement.focus();

でも動くはず。

コメント

  1. ありがとうございます。
    大変助かりました。

    返信削除

コメントを投稿

このブログの人気の投稿

【.NET】DataGridViewを選択した際に背景色を変更しない

【PostgreSQL】ROWNUMのように行番号(現在行)を取得するROW_NUMBER

Can't open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links