jQuery:特定の要素をクリックしたときに入力のフォーカスが失われるのを防ぎます

設定メニュー見つけにくい

カスタムドロップダウンメニューを含む入力があります。メニュー項目をクリックすると、入力の値が項目のテキストに設定されます。また、入力がフォーカスを失ったときにメニューを非表示にします。これにより、メニュー項目をクリックすると入力のフォーカスが失われ、メニュー項目のクリックイベントを実行する前にメニューが非表示になるという問題が発生しました。これを修正するにはどうすればよいですか?

$(document).on('click', '#inputMenu li', function (e) {
    $('#input').val($(this).text());
    $('#inputMenu').removeClass('active');
    e.preventDefault();
    return false
});
  
$('#input').on('focusout',function(e) {
    $('#inputMenu').removeClass('active');
});
 
$('#input').on('input',function(e) {
    $('#inputMenu').addClass('active');
});
#inputMenu {
  display: none;
}

#inputMenu.active {
  display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="input" type="text" placeholder="type something">
<ul id="inputMenu">
  <li>Click me to set text 1</li>
  <li>Click me to set text 2</li>
  <li>Click me to set text 3</li>
  <li>Click me to set text 4</li>
</ul>

アフマドマレキ|

この問題は、イベントの順序が原因で発生します。使用できるトリックがあります以前に発生clickmousedownイベントを置き換えますfocusout

$(document).on('mousedown', '#inputMenu li', function (e) {
    $('#input').val($(this).text());
    $('#inputMenu').removeClass('active');
    e.preventDefault();
    return false
});
  
$('#input').on('focusout',function(e) {
    $('#inputMenu').removeClass('active');
});
 
$('#input').on('input',function(e) {
    $('#inputMenu').addClass('active');
});
#inputMenu {
  display: none;
}

#inputMenu.active {
  display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="input" type="text" placeholder="type something">
<ul id="inputMenu">
  <li>Click me to set text 1</li>
  <li>Click me to set text 2</li>
  <li>Click me to set text 3</li>
  <li>Click me to set text 4</li>
</ul>

クレジット:

この回答はもともとここに投稿されました

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

モーダルのスクロールバーをクリックしたときに、ブートストラップモーダル内の入力がフォーカスを失うのを防ぎます

分類Dev

ngClickしますが、アクティブな入力がフォーカスを失うのを防ぎます

分類Dev

特定の要素にカーソルを合わせない限り、フォーカスが失われるのを防ぎます

分類Dev

Angularjsは、入力の検証が失敗したときにフォームの送信を防ぎます

分類Dev

UWPでボタンをクリックする間にフォーカスが失われるのを防ぐ

分類Dev

React Hooksでオブジェクトの配列を更新しようとすると、入力フォーカスが失われました

分類Dev

他の要素にカーソルを合わせたときに入力のフォーカスを削除してリセットする方法

分類Dev

コンテナ内の一部のテキストが強調表示されている場合を除き、要素をクリックするときに入力フィールドにフォーカスします

分類Dev

文字を入力するたびに入力フォームのフォーカスが失われる

分類Dev

JQueryボタンをクリックすると、編集可能なdivで強調表示されたテキストのフォーカスが失われます

分類Dev

(別の要素をクリックした後)Reactの特定の入力フィールドにオートフォーカスする方法は?

分類Dev

jQuery-スクロールが特定の要素に当たったときの自動入力フォーカス

分類Dev

入力要素がクリックされたときにフォームの子のテキストを取得する方法

分類Dev

入力された文字列が特定の文字に達すると、jQueryはフォーカスを次の入力に変更します

分類Dev

React Hooks-1文字を入力すると、入力のフォーカスが失われます

分類Dev

useStateフックに反応する-フォームを小道具に渡すと、入力時にテキスト入力のフォーカスが失われます

分類Dev

jquery / javascriptの入力ボックスの特定の項目の後にフォーカスを設定します

分類Dev

別のコンテナに入力フィールドを追加した後、もう一度クリックしない限り、テキスト入力を入力し続けることができません。それは焦点を失います

分類Dev

フォーカスが失われたときに日付ピッカーテキストボックスの変換/検証を無効にする

分類Dev

特定のフォーム要素で[入力]をクリックすると、送信を拒否します

分類Dev

入力イベント-入力要素のドラッグ中にフォーカスが失われます

分類Dev

クリックしたときに入力のテキストが残るフォームを作成するにはどうすればよいですか?

分類Dev

redux-formを使用すると、最初の文字を入力するとフォーカスが失われます

分類Dev

別の要素が分度器とジャスミンの特定の入力に等しいときにリピーター内の要素をクリックする

分類Dev

IotEdgeモジュールを更新するときにファイルが失われるのを防ぎます

分類Dev

コンテンツ要素のいずれかがクリックされたときにフォーカスをdivに設定します

分類Dev

送信ボタンをクリックせずにjavascriptまたはjQueryを使用して、入力されたテキストボックスから任意の値を選択したときにフォームを送信する方法

分類Dev

jQueryを使用した入力要素へのフォーカスの確認に失敗する

分類Dev

AngulaJS入力フィールドをクリックしてもフォーカスが失われません

Related 関連記事

  1. 1

    モーダルのスクロールバーをクリックしたときに、ブートストラップモーダル内の入力がフォーカスを失うのを防ぎます

  2. 2

    ngClickしますが、アクティブな入力がフォーカスを失うのを防ぎます

  3. 3

    特定の要素にカーソルを合わせない限り、フォーカスが失われるのを防ぎます

  4. 4

    Angularjsは、入力の検証が失敗したときにフォームの送信を防ぎます

  5. 5

    UWPでボタンをクリックする間にフォーカスが失われるのを防ぐ

  6. 6

    React Hooksでオブジェクトの配列を更新しようとすると、入力フォーカスが失われました

  7. 7

    他の要素にカーソルを合わせたときに入力のフォーカスを削除してリセットする方法

  8. 8

    コンテナ内の一部のテキストが強調表示されている場合を除き、要素をクリックするときに入力フィールドにフォーカスします

  9. 9

    文字を入力するたびに入力フォームのフォーカスが失われる

  10. 10

    JQueryボタンをクリックすると、編集可能なdivで強調表示されたテキストのフォーカスが失われます

  11. 11

    (別の要素をクリックした後)Reactの特定の入力フィールドにオートフォーカスする方法は?

  12. 12

    jQuery-スクロールが特定の要素に当たったときの自動入力フォーカス

  13. 13

    入力要素がクリックされたときにフォームの子のテキストを取得する方法

  14. 14

    入力された文字列が特定の文字に達すると、jQueryはフォーカスを次の入力に変更します

  15. 15

    React Hooks-1文字を入力すると、入力のフォーカスが失われます

  16. 16

    useStateフックに反応する-フォームを小道具に渡すと、入力時にテキスト入力のフォーカスが失われます

  17. 17

    jquery / javascriptの入力ボックスの特定の項目の後にフォーカスを設定します

  18. 18

    別のコンテナに入力フィールドを追加した後、もう一度クリックしない限り、テキスト入力を入力し続けることができません。それは焦点を失います

  19. 19

    フォーカスが失われたときに日付ピッカーテキストボックスの変換/検証を無効にする

  20. 20

    特定のフォーム要素で[入力]をクリックすると、送信を拒否します

  21. 21

    入力イベント-入力要素のドラッグ中にフォーカスが失われます

  22. 22

    クリックしたときに入力のテキストが残るフォームを作成するにはどうすればよいですか?

  23. 23

    redux-formを使用すると、最初の文字を入力するとフォーカスが失われます

  24. 24

    別の要素が分度器とジャスミンの特定の入力に等しいときにリピーター内の要素をクリックする

  25. 25

    IotEdgeモジュールを更新するときにファイルが失われるのを防ぎます

  26. 26

    コンテンツ要素のいずれかがクリックされたときにフォーカスをdivに設定します

  27. 27

    送信ボタンをクリックせずにjavascriptまたはjQueryを使用して、入力されたテキストボックスから任意の値を選択したときにフォームを送信する方法

  28. 28

    jQueryを使用した入力要素へのフォーカスの確認に失敗する

  29. 29

    AngulaJS入力フィールドをクリックしてもフォーカスが失われません

ホットタグ

アーカイブ