即座に検索可能なデータリストを作成する方法
ドロップダウンリストは オプションを提供する 特に利用可能なオプションのリストが長い場合、入力フィールドに対して。ユーザーは必要なオプションを選択できます。 フィールドに入力する, または オプションを見てください それは彼らが探しているもののための一致かもしれません. オプションを検索できること, しかし、理想的なソリューションです.
この動作は、 HTML要素 入力候補を表示します などのさまざまなコントロール用
タグ。しかしながら
ユーザーが持っている場合にのみ利用可能なオプションを表示します 入力したもの 入力フィールドに.
ユーザーを有効にすれば、入力フィールドをより使いやすくすることができます。 オプションの全リストにアクセスする 入力取得プロセス中のいつでも.
この記事では、作成方法を説明します。 いつでも検索できるドロップダウンリスト を使用して そして
HTML要素と小さなJavaScript.
1.オプションでデータリストを作成する
まず、さまざまなテキストエディタ用のデータリストを作成します。の値が リスト
の属性 タグ と同じです の
id
の tag - これは私たちがお互いにそれらを結び付ける方法です.
2.データリストを見えるようにする
デフォルトでは、 HTML要素は 隠された. 見ることができるのは、 入力を始める データリストが添付されているフィールドに.
しかし、データリストの内容(つまり、すべてのオプション)を「強制」する方法があります。 Webページに表示される. 私達はそれに適切なものを与えるだけです 表示
プロパティ値 以外 無し
, 例えば 表示ブロック;
.
データリストdisplay:block;
表示されたオプション まだ選択できません この時点では、ブラウザのみ オプションをレンダリングする データリストの中にあります.
前述したように、 素子, 一部のオプションはすでに表示されており、選択可能です。, ただし、ユーザーがブラウザから入力できる文字列を入力し始めたときのみ 一致するオプションを見つける.
私達はまた作るためのメカニズムを見つける必要があります すべて オプション(上記のスクリーンショットではドロップダウンデータリストの下に表示されています) 選択可能 で 入力取得プロセスの他のポイント - ユーザーが何かを入力する前にオプションをチェックアウトしたい場合、または既に入力フィールドに何かを入力している場合.
3.持ち込みます
HTML要素
ユーザーができるようにする方法は2つあります。 すべてのオプションを見て選択する いつでも彼らは欲しい:
- 我々は追加することができます クリックイベントハンドラ それがクリックされたときにオプションを選択するためにそれを使用してください。 変形する オプション 実際のドロップダウンリストに, デフォルトで選択可能.
- 私たちはできる オプションを折り返す データリストの とともに
HTML要素.
2つ目の方法は、より簡単で、使用が許可されているので選択します。 フォールバックメカニズムとして をサポートしていないブラウザでは 素子。ブラウザがデータリストをレンダリングおよび表示できない場合は、 をレンダリングします
すべてのオプションを含む要素 代わりに.
デフォルトでは、 選択する
データリストをサポートしているブラウザでは、要素は表示されません。 データリストにその内容をレンダリングさせる とともに 表示ブロック;
CSSルール.
だから、私たちが オプションを折り返す 上記の例から(データリストは 表示ブロック
) とともに HTMLタグ、コードは以下のようになります。
に すべてのオプションを見る の 選択する
ドロップダウンリストでは、属性を使用する必要があります。 複数
複数のオプションを表示する サイズ
表示したいオプションの数について.
4.切り替えボタンを追加する
完全なドロップダウンリストが表示されるはずです のみ ユーザーが トグルボタンをクリック ユーザーが作業データリストを入力している間、入力フィールドの隣に表示されます。しましょう 変更 表示
データリストの値 に 無し
, そしてまた ボタンを追加する 入力フィールドの隣にあります。 表示
データリストの価値、そして結果として 選択する
.
データリストdisplay:none;
また、HTMLファイルのデータリストの上に次のボタンを追加する必要があります。
それではJavaScriptを見てみましょう。まず、 初期変数.
button = document.querySelector( 'button'); datalist = document.querySelector( 'datalist'); select = document.querySelector( 'select'); options = select.options;
次に、私たちはする必要があります イベントリスナを追加する (toggle_ddl
ボタンのクリックイベントに データリストの外観を切り替える.
button.addEventListener( 'click'、toggle_ddl);
それから、 toggle_ddl()
関数。そうするために、我々はする必要があります の値を確認してください datalist.style.display
財産. 空の文字列の場合、データリストは非表示になります。 その値を ブロック
, そしてまた ボタンを変える 下向きの矢印から上向きの矢印へ.
function toggle_ddl()/ * DDLが隠されている場合* / if(datalist.style.display === ")/ * DDLを表示* / datalist.style.display = 'block'; this.textContent ="×¢ - ; "; else hide_select(); function hide_select()/ * DDLを隠す* / datalist.style.display ="; button.textContent = "ע¼";
の hide_select()
関数 データリストを隠す を設定して datalist.style.display
プロパティを空の文字列に戻し、ボタンの矢印を下向きに変更する.
最後の設定で、入力フィールドが以前に選択されたオプションを保持していて、ドロップダウンリストが後のボタンクリックでもトリガーされている場合は、以前に選択されたオプションも 選択されたように表示される必要があります ドロップダウンリストで.
それで、次の強調表示されたコードをに追加しましょう。 toggle_ddl()
関数:
function toggle_ddl()/ * DDLが隠されている場合* / if(datalist.style.display === ")/ * DDLを表示* / datalist.style.display = 'block'; this.textContent ="×¢ - "2"; var val = input.value;(var i = 0; iの場合また、ユーザーが入力フィールドに入力しているときに(作業データリストが表示される時点で)ドロップダウンリストを非表示にしたいと思います。.
/ *ユーザーがテキストフィールドに入力したい場合は、非表示にします。DDL * / input = document.querySelector( 'input'); input.addEventListener( 'focus'、hide_select);5.オプションが選択されたときに入力を更新する
最後にしましょう 追加する
変化する
イベントハンドラ にユーザーがドロップダウンリストからオプションを選択すると、その値が
フィールドも.
/ *ユーザーがDDLからオプションを選択したとき、それをテキストフィールドに書き込む* / select.addEventListener( 'change'、fill_input); function fill_input()input.value = options [this.selectedIndex] .value; hide_select();欠点
この手法の主な欠点は、 スタイルを設定する直接的な方法がない
素子 CSSで(の外観
そして
タグはブラウザによって異なります).
また、Firefoxでは、入力テキストは次のオプションと照合されます。 含む 他のブラウザは で始まる それらの文字データリストのW3C仕様では、照合方法を明示的に指定していません.
それ以外はこの方法がいいし すべての主要ブラウザで動作します, それが動作しないかもしれないブラウザでは、ユーザーはまだドロップダウンリストを見ることができますが、提案だけは表示されません.
下記のちょっとしたCSSスタイルで、最後のデモをチェックしてください。