LoginSignup
3
4

More than 3 years have passed since last update.

【jQuery】ソフトウェアキーボードを導入してみる

Last updated at Posted at 2020-04-19

コンボボックスで選択するにしも、数が10個以上とかになってくると扱いにくくなることもある。そこで、ソフトウェアキーボードの導入を考えてみた。

想定している動作

 ・コンボボックスではなくテキストボックスにする。
 ・テキストボックスをクリックするとソフトウェアキーボードが出る。
 ・ソフトウェアキーボードのボタンを押すと入力できる。外からキーボードでの入力はできない。
 ・「10」とか「ABCD」とかのような文字列でもボタン一つで入力できる。

見つけたプラグイン

 検索してプラグインとして使えるものはないかを探してみたら、このようなものを発見。これを今回導入してみた。
jQuery Keypad *英語サイト

実装方法

ダウンロードとソースの利用

 サイト内の「Download now」のボタンでソースをダウンロードできる。
 jQueryを下のようにして取り入れる。(jQueryのバージョンは1.7以降で。)

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

ダウンロードしたソースは下のようにして使えるようにする。(サイトにあるものをそのまま抜粋したものなので、src属性はどこに置いたかで変わるよ。)

<link type="text/css" href="css/jquery.keypad.css" rel="stylesheet"> 
<script type="text/javascript" src="js/jquery.plugin.js"></script> 
<script type="text/javascript" src="js/jquery.keypad.js"></script>

とりあえず表示させてみる

 ソース全体としてはこんな感じ。

test.html
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>ソフトウェアキーボードテスト</title>
        <link href="./js/jquery.keypad.package-2.1.1/css/jquery.keypad.css" rel="stylesheet">
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
        <script src="./js/jquery.keypad.package-2.1.1/js/jquery.plugin.js"></script>
        <script src="./js/jquery.keypad.package-2.1.1/js/jquery.keypad.js"></script>
        <script>
            $(function () {
              //$(' ')の中身はソフトウェアキーボードを表示させたいid
              $('#softwareKeyboard').keypad({
                //ここでオプションを付けてカスタマイズできる
                });
            });
        </script>
    </head>
    <body>
        ソフトウェアキーボードテストページ
        <input type="text" name="test" id="softwareKeyboard">
    </body>
</html>

実装した結果はこんな感じで出る。(Google Chromeで表示)
 image.png

オプション

 コード内の「ここでオプションを付けてカスタマイズできる」の所で、色々カスタマイズができる。

キー デフォルト 説明
showOn focus キーボードを出すときの手段。"focus"でテキストボックスにフォーカスを当てた時。"button"でボタンを押したとき。"both"は両方。
showAnim show キーボードを出すアニメーション。サイトのInvocationタブの一番下でサンプルがあるので、そこを見よう。
duration normal キーボードを出す速さ。"slow"と"normal"と"fast"の中から選ぶ。
appendText (空文字列) テキストボックスの右側に書く文字列。
prompt (空文字列) キーボードの上の方に書く文字列。
layout (省略) どのようなキーを設置するかを文字列型の配列で指定する。1要素で1行になる。(詳細を後述)
separator (空文字列) layoutで区切り文字を指定する。(詳細を後述)
keypadOnly false 外からキーボードで入力できないようにするかどうか。trueでソフトウェアキーボードのみの入力となる。
randomiseAlphabetic false trueだと、layoutを$.keypad.qwertyAlphabeticにした時にランダムなキー配列となる。パスワード入力で利用できそう?
randomiseNumeric false trueだと、テンキーにした時にランダムなキー配列となる。パスワード入力で利用できそう。
beforeShow null キーボードを出す直前の処理。
onKeypress null キーを押したときの処理。
onClose null キーボードを閉じる時の処理。

layout,separator

 layoutは配列を用いて何を入力するボタンにするかを指定できる。1つの要素で1行分となる。
 separatorは区切り文字で、この区切り文字ごとに1行内でボタンが分かれる。
 なお、上のCLOSEなどのボタンは$.keypad.CLOSEなどを指定すればよい。
 下の例はテレビのリモコンみたいに1~12までのボタンが出るもの。

$('#softwareKeyboard').keypad({
    layout:["1|2|3","4|5|6","7|8|9","10|11|12", $.keypad.CLOSE],
    separator:"|"
});

image.png
 英数字でパスワードを打ちたいというような時は、次の例のように書くとフルのキーボードが出る。

$('#softwareKeyboard').keypad({
    layout:$.keypad.qwertyLayout
});

image.png

3
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
3
4