作成日: 2026/01/20 最終更新日: 2026/01/20
文書種別
使用方法
詳細
AutoCompleteでリストにない文字列が入力された場合に、入力を無効とし、コントロールがフォーカスを失ったときに、直前に選択されていた値に戻るようにする方法について説明します。
(1) プロパティによる設定
AutoCompleteのisEditableプロパティをfalse、isRequiredプロパティをtrueに設定します。
ただし、以下のケースBやケースCのように、入力値がリストにない場合でも、入力値が設定されたままになるケースがあります。
・ケースA:一致する項目が存在しない場合
[例] 以下のサンプルで"アイイ"を入力
[結果] 入力後にテキストボックスが空になり、フォーカスアウトすると直前の値に戻る。
[説明] 入力後に検索が実行され、検索に一致する項目が存在しないため、入力が無効とみなされる。値の設定が必須のため、直前に選択していた値に戻る。
・ケースB:部分一致する項目が存在する場合
[例] 以下のサンプルで"アイ"を入力
[結果] 入力完了後もフォーカスアウト後も"アイ"が入力されたままになる。
[説明] 入力後に検索が実行され、部分一致する項目が存在する場合、コントロールは入力を進行中として扱い、入力値を維持して、ユーザーが入力を続行できるようにする。
・ケースC:検索が未実行の場合
[例] 以下のサンプルで"ヲ"を入力
[結果] 入力完了後もフォーカスアウト後も"ヲ"が入力されたままになる。
[説明] 入力文字数が最小検索文字数未満のため、検索が実行されず、コントロールは入力を進行中として扱い、入力値を維持して、ユーザーが入力を続行できるようにする。(最小検索文字数はminLengthプロパティで設定可能で、サンプルの場合はデフォルト値の2の設定になっている)
(2) 独自実装により厳密に制限する場合
前述のケースBやケースCの場合にも、入力を無効とし、直前の値に戻したい場合は、独自実装により、gotFocusイベントで直前に選択されていた値を保持しておき、lostFocusイベントで無効な値が入力された場合に、保持していた値を再設定します。
サンプル