2

IE で focus() を使用しようとしましたが、機能しません。

これは私のソースコードです。

------------------HTML--------------------- -------

<tr>
<td>
    <input type="text" id="INPUT_TEST_1" onblur="fn_onblur(this)"/>
    <input type="text" id="INPUT_TEST_2" onblur="fn_onblur(this)"/>
</td>

------------------JavaScript---------------------------------- -------

function fn_onblur(obj){
var id = obj.id;
var target = $("#"+id);
if(gfn_isNull(target.val())){
    alert(id+" need input value!!!");
    target.focus();
    setTimeout(function() { 
        obj.focus();
    }, 1);
    return;
}

}

問題は、何も値を指定せずに INPUT_TEST_1 と INPUT_TEST_2 をクリックすると、

focus() は機能しませんが、これは Chrome と FF で機能します。

私はすでに試しました

setTimeout(function(){obj.focus();},1);
setTimeout(function(){target.focus();},1);
setTimeout(function(){$("#"+id).focus();},1);
setTimeout(function(){document.getElementById(id).focus();},1);

や。。など。

しかし、何もうまくいきませんでした。

4

2 に答える 2

1

タイムアウトを設定して入力に集中することでなんとか克服しました

<form>
   <label for="name">Name</label>
   <input id="name" name="name" />
    <br />
   <label for="city">City</label>
   <input id="city" name="city" />
    <br />
</form>

それで ..

$('input[name="name"]').blur(function(e){
    if(/^\s*$/.test($(this).val())){
        alert('Value needed');
        setTimeout(function() {e.target.focus();}, 50);
    }
});

ここでフィドル

于 2013-10-21T09:28:44.877 に答える