jqueryのblurの後、focusは焦点の解決方法を得られません

1908 ワード

1:多くの子供靴がこのような状況に遭遇する可能性があります.
jqueryのblurの後、focusはフォーカスを取得できません.
 
2:シーンの使用:
ユーザーが情報を記入するとき、メールボックスが空の場合、メールボックスに記入し、メールボックスに記入するテキストボックスにカーソルを置いて、ユーザーの再入力を便利にするようにヒントを与えます.
 
もちろん、jqueyのblur()とfocus()の2つの関数を使用して、上記の要件を実現します.
$("#email").blur(function(){

       if($("#email").val()==''){

            alert('       ');

            $("#email").focus();    

       }    

})

三:コード解釈:
メールに記入したテキストボックスがフォーカスを失った場合、記入したメールボックスが空の場合、「メールボックスに記入してください」というプロンプトがポップアップし、テキストボックスのフォーカスを再取得し、ユーザーが再入力できるようにします.
 
FF上でtestを実行する.htmlの后で:発见することができて、弾枠は弾いて、しかし焦点を得ることができなくて、とてもおかしいでしょう、コードは明らかに间违いがなくて、IEの上で运行の结果は正常で、ポップアップの情报があって、焦点も得ることができます.
 
四:では、これはまた互換性の問題だと思います.
 
はい.FFとIEの互換性は確かに私たちに多くの迷惑をかけた.
 
五:問題が発生した原因はFFとIEのblurとfocusについてのメカニズムが違うからである.
FFのfocusはblurより前しかありません.
 
六:では、このバグをどう解決すればいいのでしょうか.
 
settimeoutを使用して遅延すればいいです.
 
修正コードは次のとおりです.
$("#email").blur(function(){

    if($("#email").val()==''){

        alert('       ');

        //$("#email").focus();

        window.setTimeout (function(){ document.getElementById ('email'). select();},0 );     

    }    

})

 

七:それぞれIEとFFの上で運行して、完璧に互換性があります.