jQueryの入力フィールドからフォーカスを削除する方法は?


136

次の行を使用してページをロードするときに、特定の入力フィールドにフォーカスを設定しています。

$('#myInputID').focus();

特定の要素にカーソルを合わせると、このフォーカスを元に戻したり削除したりできる方法はありますか?(この要素を終了した後でフォーカスをリセットする必要はありません。)

jQueryで上記の反対の関数を見つけることができなかったか、そうでなければここで機能します。

回答:


227

.blur()を使用します。

要素がフォーカスを失うと、blurイベントが要素に送信されます。元々、このイベントはのようなフォーム要素にのみ適用可能でした<input>。最近のブラウザでは、イベントのドメインが拡張され、すべての要素タイプが含まれるようになりました。要素は、Tabキーなどのキーボードコマンドを使用するか、ページ上の他の場所でマウスをクリックすると、フォーカスを失う可能性があります。

$("#myInputID").blur(); 

わかりました、私はここで何か悪いことをしていると思うか、これを間違った方法で説明しました。ここで使用したい要素にはクラスnavbar(これはBootstrap 3 navbarです)があるため、以下を試してみましたが、機能しません:$( '。navbar')。on( 'mouseover'、function(){$( '#myInputID')。blur();});
user2571510 2014

はい、そうしました。これが機能しない場合は、代わりにナビゲーションバーにフォーカスを設定できますか?
user2571510 2014

1
@ user2571510:イベント内でアラートを出してみて、イベントが発生しているかどうかを確認してください。
Milind Anantwar 2014

はい、アラートは表示されますが、フィールドからフォーカスが削除されるわけではありません。
user2571510 2014

1
@ user2571510:ページに重複したIDがありますか?使用してみる$("[id=myInputID]").blur();
Milind Anantwar 2014



0

$(':text').attr("disabled", "disabled");すべてのテキストボックスを無効モードに設定します。それぞれのテキストボックスIDを与えるような別の方法で行うことができます。このコードを実行すると、重みが大きくなり、パフォーマンスの問題が発生します。

だから$(':text').attr("disabled", "disabled");アプローチが良い。


0

readonly属性がある場合、ぼかしだけでは機能しません。以下の仕掛けは仕事をする必要があります。

$( '#myInputID')。removeAttr( 'readonly')。trigger( 'blur')。attr( 'readonly'、 'readonly');
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.