C:blanc
投稿日
2022年07月15日
Blog JavaScript

プルダウンメニューにもなるテキストボックス

  • このエントリーをはてなブックマークに追加

はじめに

プルダウンで入力していて、たまにデフォルト以外の値も入力したいってことありますよね?
そこで、両方の機能をもったテキストボックスを作ってみました。
今回は、jQueryjQuery UI でやってみたいと思います。
ついでに、Autocomplete も追加してみます。

html

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">

<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.min.css" />
<link rel="stylesheet" href="./style.css" />

</head>
<body>

<input type="text" name="fruits" id="textbox" placeholder="くだもの" />

<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js" integrity="sha256-lSjKY0/srUM9BE3dPm+c4fBo1dky2v27Gdjm2uoZaL0=" crossorigin="anonymous"></script>
<script src="./script.js"></script>

</body>
</html>

CSS

CSSが無くても機能自体に特に影響はありません。
style.css
input[type="text"] {
    box-sizing: border-box;
    width: 10em;
    margin: 0;
    padding: 0.5em;
    border: none;
    background-color: #fffbea;
    text-align: left;
    font-size: 16px;
    line-height: 1;
}

input[type="text"]:focus {
    background-color: #f8ffbe;
}

Javascript

プルダウンメニューでなく、オートコンプリートのみでも動きます。
その場合、DBのデータをajaxで呼び出して、オートコンプリートさせることもできます。
script.js
$('#textbox').autocomplete({
    minLength : 0,
    delay : 0,
    source: function(request, response) {
        response(
            $.grep(['りんご', 'みかん', 'バナナ', 'ぶどう', 'パイナップル', 'パイナップルジュース'], function(value) {
                return value.indexOf(request.term) === 0;
            })
        );
    },
    select : function(event, ui) {
        $(this).val(ui.item.name)
    }
}).focus(function() {
    $(this).autocomplete('search', '')
});

DEMO

https://blog.c-blanc.com/demo/blog/6/

テキストボックスに加え、プルダウンメニューも機能します。
プルダウンには、オートコンプリート機能も付けたので、例えば、「パ」とか「パイナ」などと入力すると、「パイナップル」と「パイナップルジュース」がリストアップされます。
1台3役といったところでしょうか。

終わりに

jQueryはまだまだ現役ですよね?
「えっ、まだ使ってるの?」って?w
ただ、jQuery UIが開発終了になりました。
代替えを考えないといけませんね。(何が良いのでしょうか?)
datepicker なども多用しているので、大変です。
HTML5も廃止されましたし、今後どうなっていくのでしょうか。

PROFILE

C:blanc
フリーランスのプログラマーです。
  • COMMENT

    送信しました! コメントは承認後表示されます!
  • あと150文字