5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

テキスト入力もできるセレクトボックスを一番簡単に作る

Posted at

やりたいこと

mysqlのテーブルデータを元にしたリストボックスを作りたい。
さらにリストにないデータも入力できるようにしたい。

条件的なモノ

・言語:php + smarty
・jquery 可
・使い方がシンプル
・コード量が少なくていい
・IE対応

採用した方法

上記理由により jquery-ui の autocomplete を採用しました。

デフォのデザインがあまりイケてませんがw
css上書きすればいいだけですしね。

使い方

autocomplete は数文字入力して候補を表示させる使い方が一般的ですが
minLength: 0指定と.focusメソッドを同時に使うことで
セレクトボックスのようにフォーカス時に未入力でも候補を表示することができます。

autocomplete用のsourceの渡し方もajaxとかjsonとか使っても良かったんですが、シンプルにPHPでカンマ区切りのデータ($name_list)を作ってsmartyでhiddenに渡しました。

※PHPでデータ作る部分は端折りました。

html

<input type="text" id="select_name" name="select_name">
<input type="hidden" name="name_list" id="name_list" value="{$name_list}">

javascript

$(function(){
  var list_str = j$( "#name_list" ).val();
  var list = list_str.split(',');

  $( "#select_name" ).autocomplete({
    minLength: 0,
    source: list
  }).focus(function() {
    $(this).autocomplete("search", "");
  });;
});

今どきのやり方ではないとは思うのですが、ご参考までに。

業務外とかIE考えなくてよければHTML5のinputでやりたいとこでした。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?