【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();
でも動くはず。