[解決済み] jQuery: blur() イベントの前に click() を実行する。
2022-06-01 21:32:47
質問
入力フィールドがあり、そこでオートコンプリートの候補を作ろうとしています。コードは次のようになります。
<input type="text" id="myinput">
<div id="myresults"></div>
入力の
blur()
イベント時に、resultsのdivを隠したい。
$("#myinput").live('blur',function(){
$("#myresults").hide();
});
入力に何かを書き込んだら、サーバにリクエストを送信してjsonレスポンスを取得し、それをul->li構造にパースして、このulを自分の
#myresults
divに配置します。
この解析されたli要素をクリックすると、liの値をinputに設定し、非表示にしたい。
#myresults
div
$("#myresults ul li").live('click',function(){
$("#myinput").val($(this).html());
$("#myresults").hide();
});
すべてうまくいっているのですが、liをクリックすると
blur()
の前にイベントが発生します。
click()
というイベントが発生し、liのhtmlが入力されなくなります。
どのように設定すれば
click()
イベントの前に
blur()
?
どのように解決するのですか?
解決策1
聞く
mousedown
ではなく
click
.
は
mousedown
と
blur
のイベントは、マウスボタンを押したときに次々と発生しますが
click
は離したときだけ発生します。
解決方法2
あなたは
preventDefault()
で
mousedown
を使用して、ドロップダウンがフォーカスを奪われないようにブロックしています。わずかな利点は、マウスボタンが離されたときに値が選択されることで、これはネイティブの選択コンポーネントがどのように動作するかということです。
JSFiddle
$('input').on('focus', function() {
$('ul').show();
}).on('blur', function() {
$('ul').hide();
});
$('ul').on('mousedown', function(event) {
event.preventDefault();
}).on('click', 'li', function() {
$('input').val(this.textContent).blur();
});
関連
-
[解決済み] 要素外でのクリックを検出するにはどうすればよいですか?
-
Uncaught TypeError: 未定義のプロパティ 'length' を読み取れませんでした。
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] jQueryでテーブルの行を追加する
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み] ユーザーがEnterキーを押してフォームを送信できないようにする
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jQueryで複数のクラスを持つ要素を選択するにはどうすればよいですか?
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] jQueryのSELECT要素で特定のオプションを選択するにはどうすればよいですか?
-
[解決済み] Twitter Bootstrapのモーダルクローズに関数をバインドする
-
[解決済み] jQuery: テーブルの行数を数える
-
[解決済み] Bootstrapのモーダルを閉じる
-
[解決済み] jQueryを使用して配列から特定の値を削除する方法
-
[解決済み] jQuery セレクタ。Id Ends With?
-
[解決済み] jQuery .onとhoverの使い分けは可能ですか?
-
[解決済み】jQueryがリクエストボディに有効なjsonを投稿する。