1: 多くの子供の靴はこの状況に遭遇する可能性があります:
jquery のぼかしの後、フォーカスを取得できません。
2: 使用シナリオ:
ユーザーが情報を入力するとき、電子メールが空の場合は、電子メールを入力してくださいというプロンプトが表示され、ユーザーが簡単に電子メールを入力できるようにテキスト ボックスにカーソルを置きます。もう一度入力してください。
もちろん、上記の要件を達成するために、jquey の Blur() と focus() という 2 つの 関数 を使用します:
$("#email").blur(function(){ if($("#email").val()==''){ alert('请填写您的邮箱'); $("#email").focus(); } })
3: コードの説明:
メールに入力するテキスト ボックスがフォーカスを失ったとき、埋め込まれた場合電子メールが空の場合、「電子メールを入力してください」というプロンプトがポップアップ表示され、テキスト ボックスにフォーカスが戻り、ユーザーが再入力しやすくなります。
FF で test.html を実行すると、ポップアップ ボックスが表示されますが、フォーカスを取得できないことがわかります。IE で実行した結果は、明らかにエラーではありません。通常の場合、ポップアップ メッセージが表示され、フォーカスも取得されます。
4: そうすると、これは別の互換性の問題だと思うでしょう。
はい。 FF と IE は互換性の点で確かに多くの問題を引き起こしました。
5: 問題の原因は、FF と IE のぼかしとフォーカスのメカニズムが異なることである可能性があります。
FFフォーカスはブラーの前にのみ可能です。
シックス: では、このバグを解決するにはどうすればよいでしょうか?
遅延するには settimeout を使用します。
変更されたコードは次のとおりです:
$("#email").blur(function(){ if($("#email").val()==''){ alert('请填写您的邮箱'); //$("#email").focus(); window.setTimeout (function(){ document.getElementById ('email'). select();},0 ); } })
Seven: それぞれ IE と FF で実行され、完全な互換性があります。
以上がjquery Blur後にフォーカスが取得できない問題の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。