HTML5 テキストボックスでユーザー入力を特定の長さに制限するにはどうすればよいinput[type=number]
ですか?
への答え
HTML5の「数値」要素で可能な入力を制限するにはどうすればよいですか?
不正な入力を処理しない
<input class="quantity" type="number" min="0" max="99999" maxlength="5" />
$("quantity").keyup(function(){
var $field = $(this);
if ($field.val().length > Number($field.attr("maxlength"))) {
var value = $field.val().slice(0, 5);
$field.val(value);
}
});
maxlength 属性がサポートされていないことはわかっていますが、指定された長さを取得するために使用しています。
上記のコードは、firefox では問題なく動作しますが、chrome と safari では、5 つの「有効な」文字を入力した場合にのみ動作します。「a」、「b」などの無効な文字を入力し始めると、さらに文字を入力できるようになり、テキストボックスの色が赤に変わります。
入力が無効になると、$field.val()
常に空の文字列が返され$field.val().length
、が返されることがわかりました0
。
キーコードを入力用の文字に変換し、入力ボックスの「データ値」属性に保存して、入力の値をチェックして上書きしようとしましたが、信頼できるようには見えませんでした。
input[type=number]
と同じように動作させることができる解決策はありますinput[type=text][maxlength=5]
か?