2
1

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.

入力可能なリストボックス

Last updated at Posted at 2019-06-03

前置きというか言い訳というか

自分が知らなかっただけなんですが、ググっても良さそうな記事も見つけられなかったので、備忘録を兼ねて。

やりたいこと

Webシステムで、例えば備考ようの定型文があるとして、

  • 定型文から選択する(入力の簡易性のため)
  • 自由入力をする(入力の自由性のため)

の両方を実現させたい。

結論

<input type="textbox" list="fuga"><datalist id="fuga">を使う。

サンプルソース(要点のみ)

hoge.aspx
<asp:TextBox ID="txtBiko" runat="server"></asp:TextBox>
<datalist runat="server" id="dlBiko"></datalist>
hoge.aspx.vb
' DB等から dtTbl As DataTable にデータを取って来ている前提で・・・
Dim strOption As String = ""
For Each dRow As DataRow In dtTbl.Rows
    strOption += "<option>" + dRow("VALUE1").ToString + "</option>"
Next
Me.dlBiko.InnerHtml = strOption
Me.txtBiko.Attributes("list") = Me.dlBiko.ClientID

Me.dlBiko.ClientIDとしているのは、asp.netのマスター画面を使っていて、
クライアントIDとサーバー側IDが同一のものにならないので、その対策です。

結果

ちょっと画像をつけるのが面倒なのでサボりますが、
テキストボックスにカーソルが当たると、選択項目の一覧が直下(または直上)に
ずらっと出てきて選ぶことができるようになりました。
テキストボックスなので、文字を削除したり自由に入力したりもできます。

ちなみに厳密に言うと
「入力文字列を条件として選択項目を 前方一致 部分一致で絞り込んだ結果を
 選択可能な一覧として表示する」
という仕組みです。

そのため、テキストボックスが空欄であればすべての選択項目の一覧から
選ぶことができますが、
すでに入力がある場合はある程度絞り込まれた一覧から選択することとなります。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?