フォームフィールドの外側をクリックすると、自動入力ドロップダウンを非表示にします

anbhd

フォームフィールドに入力すると、配列からの結果のドロップダウンが表示される自動入力検索を行いました。

私が抱えている問題は、ドロップダウンの外側をクリックすると、本来のように消えてしまうのですが、フォームフィールドにもう一度入力し始めると、ドロップダウンが表示されないということです。私はこれを達成するためにjQueryを使用しようとしています:

これは、検索フィールドの下にドロップダウンを表示するためのものです。

const input = document.querySelector('#FAVORITE_LOCATION');
const suggestions = document.querySelector('.suggestions ul');
const country = ['USA', 'Canada'];

function search(str) {
    let results = [];
    const val = str.toLowerCase();

    for (i = 0; i < country.length; i++) {
        if (country[i].toLowerCase().indexOf(val) > -1) {
            results.push(country[i]);
        }
    }

    return results;
}

function searchHandler(e) {
    const inputVal = e.currentTarget.value;
    let results = [];
    if (inputVal.length > 0) {
        results = search(inputVal);
    }
    showSuggestions(results);
}

function showSuggestions(results) {

    suggestions.innerHTML = '';

    if (results.length > 0) {
        for (i = 0; i < results.length; i++) {
            suggestions.innerHTML += `<li>${results[i]}</li>`;
        }
        suggestions.classList.add('has-suggestions');
    } else {
        results = [];
        suggestions.innerHTML = '';
        suggestions.classList.remove('has-suggestions');
    }
}

function useSuggestion(e) {
    input.value = e.target.innerText;
    input.focus();
    suggestions.innerHTML = '';
    suggestions.classList.remove('has-suggestions');
}

input.addEventListener('keyup', searchHandler);
suggestions.addEventListener('click', useSuggestion);

以下は、入力されるオートフィルを非表示にしようとしている場所です。

$(document).on('click', function(event){
    var container = $("ul.has-suggestions");
    if (!container.is(event.target) &&            
        container.has(event.target).length === 0) 
    {
       container.hide();
    }else{
        container.show();
    }
});

最後に、ドロップダウン自体のCSSは次のとおりです

.search-container {
  position: relative;
}

.search-container input,
.search-container .suggestions {
  width: 100%;
}
.search-container input {
  background-color: white;
  height: 60px;
  padding: 0 10px;
}
.search-container .suggestions {
  position: absolute;
  top: 80px;
}

ul {
  display: none;
  list-style-type: none;
  padding: 0;
  margin: 0;
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2);
  max-height: 200px;
  overflow-y: auto;
}
ul.has-suggestions {
  display: block;
}
ul li {
  padding: 10px;
  cursor: pointer;
  background-color: white;
  color: black;
}

ul.has-suggestionsは、ユーザーがフォームフィールドに入力し始めると、display:blockに設定されます。これにより、入力されたドロップダウンが表示されます。if / elseステートメントを使用して.show();を使用しようとしました。しかし、それは機能していないようです。

どんな助けでもいただければ幸いです!

ありがとうございました!

J.ティマーマン

オートコンプリートの提案を表示および/または非表示にするには、おそらく次のようなことをしたいと思うでしょう。

input.addEventListener('blur', function() {
  $("ul.has-suggestions").hide();
})

input.addEventListener('focus', function() {
  $("ul.has-suggestions").show();
})

編集:例を含むcodepen

要求された更新で2を編集します。例のあるcodepen

この2番目のcodepenは、クリックされた値をフォームフィールドに入力します。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

anglejsは、入力フィールドの内側をクリックするとdivを表示し、外側をクリックすると非表示にします

分類Dev

別のフォーム入力フィールドをクリックすると、チェックボックスが自動的にオンになります

分類Dev

ドロップダウン選択を使用して、PHPフォームのフィールドに自動入力します

分類Dev

ユーザーがドロップダウンの外側をクリックしたときにドロップダウンを非表示にする方法

分類Dev

Rails:ユーザーがURLリンクをクリックすると、フォームフィールドに自動入力されます

分類Dev

フォーム付きのドロップダウンメニューをクリックし、外側をクリックして閉じます

分類Dev

ユーザーが検索入力フィールドと検索結果の外側をクリックしたときに、検索入力フィールドと検索結果を非表示にします

分類Dev

選択ドロップダウンを自動的にトリガーして、他の非表示フィールドを表示します

分類Dev

Angular JS-入力のフォーカスを自動的に設定し、先行入力ドロップダウンを表示します-ui.bootstrap.typeahead

分類Dev

XBoxの入力フィールドをクリックすると、プログラムでキーボードを起動します-UWPアプリ(JS)

分類Dev

ドロップダウンを切り替えて、外側のクリックを非表示にします

分類Dev

jQuery / PHP:MySQLをクエリするフォームフィールドに自動的に入力します

分類Dev

PHP-MySQL DBから選択ドロップダウンにデータを入力し、そのフィールドをフォームに自動入力します

分類Dev

Laravel複数行入力/ドロップダウンを選択すると、行のテキストボックスフィールドに自動的に入力されます

分類Dev

iframeの外側のリンクがクリックされたときに、iframeの内側の入力フィールドに入力します

分類Dev

ユーザーがドロップダウンリストからアイテムをクリックするたびに、その値を読み取り、入力フィールドに入力します

分類Dev

Angular2の動的フォームにドロップダウンを入力します

分類Dev

角度のあるフォームはクリック時に入力フィールドを追加します

分類Dev

Django:AJAXを使用したファイルのアップロード:フォームに、ファイル入力フィールドが空である(またはCSRFトークンがないか正しくない)と表示されます

分類Dev

ドロップダウンで値を選択すると、非表示の入力フィールドが表示されます

分類Dev

ReactセマンティックUI:ドロップダウン要素の入力フィールドにフォーカスを設定する方法

分類Dev

Angular6のAGグリッドのcsv機能にエクスポートする非表示フィールドをダウンロードします

分類Dev

3つのドロップダウンボックスのフォームに入力された時間をフォーマットします

分類Dev

ドロップダウンボックスからの変更時に選択されたものに基づいて、他の入力フィールドを作成するためのフォームを作成します

分類Dev

境界の外側をクリックするとフォームコントロールを非表示にする、VBA Access

分類Dev

ドロップダウンメニューの入力に基づいてjavascriptプリフォームをアクションにします

分類Dev

VBAはデスクトップフォルダへのPDFリンクを自動的にダウンロードします

分類Dev

ボタンをクリックするとフォームに自動入力

分類Dev

ドロップダウンディレクティブに小さなフォームを挿入します

Related 関連記事

  1. 1

    anglejsは、入力フィールドの内側をクリックするとdivを表示し、外側をクリックすると非表示にします

  2. 2

    別のフォーム入力フィールドをクリックすると、チェックボックスが自動的にオンになります

  3. 3

    ドロップダウン選択を使用して、PHPフォームのフィールドに自動入力します

  4. 4

    ユーザーがドロップダウンの外側をクリックしたときにドロップダウンを非表示にする方法

  5. 5

    Rails:ユーザーがURLリンクをクリックすると、フォームフィールドに自動入力されます

  6. 6

    フォーム付きのドロップダウンメニューをクリックし、外側をクリックして閉じます

  7. 7

    ユーザーが検索入力フィールドと検索結果の外側をクリックしたときに、検索入力フィールドと検索結果を非表示にします

  8. 8

    選択ドロップダウンを自動的にトリガーして、他の非表示フィールドを表示します

  9. 9

    Angular JS-入力のフォーカスを自動的に設定し、先行入力ドロップダウンを表示します-ui.bootstrap.typeahead

  10. 10

    XBoxの入力フィールドをクリックすると、プログラムでキーボードを起動します-UWPアプリ(JS)

  11. 11

    ドロップダウンを切り替えて、外側のクリックを非表示にします

  12. 12

    jQuery / PHP:MySQLをクエリするフォームフィールドに自動的に入力します

  13. 13

    PHP-MySQL DBから選択ドロップダウンにデータを入力し、そのフィールドをフォームに自動入力します

  14. 14

    Laravel複数行入力/ドロップダウンを選択すると、行のテキストボックスフィールドに自動的に入力されます

  15. 15

    iframeの外側のリンクがクリックされたときに、iframeの内側の入力フィールドに入力します

  16. 16

    ユーザーがドロップダウンリストからアイテムをクリックするたびに、その値を読み取り、入力フィールドに入力します

  17. 17

    Angular2の動的フォームにドロップダウンを入力します

  18. 18

    角度のあるフォームはクリック時に入力フィールドを追加します

  19. 19

    Django:AJAXを使用したファイルのアップロード:フォームに、ファイル入力フィールドが空である(またはCSRFトークンがないか正しくない)と表示されます

  20. 20

    ドロップダウンで値を選択すると、非表示の入力フィールドが表示されます

  21. 21

    ReactセマンティックUI:ドロップダウン要素の入力フィールドにフォーカスを設定する方法

  22. 22

    Angular6のAGグリッドのcsv機能にエクスポートする非表示フィールドをダウンロードします

  23. 23

    3つのドロップダウンボックスのフォームに入力された時間をフォーマットします

  24. 24

    ドロップダウンボックスからの変更時に選択されたものに基づいて、他の入力フィールドを作成するためのフォームを作成します

  25. 25

    境界の外側をクリックするとフォームコントロールを非表示にする、VBA Access

  26. 26

    ドロップダウンメニューの入力に基づいてjavascriptプリフォームをアクションにします

  27. 27

    VBAはデスクトップフォルダへのPDFリンクを自動的にダウンロードします

  28. 28

    ボタンをクリックするとフォームに自動入力

  29. 29

    ドロップダウンディレクティブに小さなフォームを挿入します

ホットタグ

アーカイブ