※今回はVBは関係ありません。
今回はjQuery UI のお話。
公式サイトにあるオートコンプリートデモを触ってみてスゲーと思いましたが、
「あとちょっとこうだったら・・・」という部分があったので手を入れてみました。
具体的には以下のようなことをしたかったのです。
1.選択肢にないものが選べてはいけない。
2.入力値が完全でなくても候補が1つしかないのであれば、自動的にそれとみなす。
これに近いデモがコンボボックスによるオートコンプリートなのですが、
「2」はカバーできていないようです。
これに手を入れるにしても、scriptがやたら長いのでとてもじゃないがやりたくない。
というわけで「Custom data and display」のサンプルに手をいれて、「2」を実装してみました。
で、どうやって実装するか?なんですが、
・テキストボックスのロストフォーカスをフックする。
・入力値をもとにデータソースを検索、HIT数を調べる。
・HIT数が1なら、そのアイテムを選択したとする。
・HIT数が1以外なら、アイテムの選択はなかったものとする。
といういたってシンプルなもの。
実装結果はコレ

ポイントは
・ID、名前(漢字、ひらがな)で都道府県の検索ができる。
・選択候補が1つになったときにロストフォーカスすると、選択したとみなす。
・選択候補が1つでないときにロストフォーカスすると、入力値などが初期化される。
注意点としては、
・テキストボックス編集の有無にかかわらず、ロストフォーカスすると処理が走る。
・リストにないものは選べない。(当たり前ですが)
です。
以下、ソースコードベタ貼りとダウンロード。
続きを読む ...