input type="number"
を使用すると、次のように数字キーボードが表示されることに注意してください。
input type="text"
を使用して同じテンキーを表示することはできますか?私 しない 値に小数点以下の桁数が含まれる可能性があるため、pattern="\d*"
を使用してテンキーを表示したい。
input type="text"
の代わりにinput type="number"
を使用したい理由は、数値フィールドに数値以外を入力すると、値を取り戻せないためです。たとえば、入力した場合 ABC、自動的に空になります。この種の制御では、input type="text"
を使用する方が簡単なようです。
入力が真の数値、整数、または10進数の場合は、HTML5 type="number"
入力を使用します。これにより、Androidデバイス(Windows Phoneも想定)で正しいキーボードが表示されます。
次に、その属性にpattern="[0-9]*"
を配置して、iOSで特別な数字キーパッドを強制するのがコツです。ご了承ください:
最後に、真の数値ではない入力にはタイプ番号フィールドを使用しないでください(たとえば、先行ゼロのある郵便番号や、コマまたはスペースのある製品コード)。数値入力フィールドは、真の数値ではない値を送信することはできません。 (ブラウザ/デバイスによって異なります)
このコードを使用します:
<input type="number" pattern="[0-9]*" />
IOSのAppleで提供される数字キーボードは悲しい冗談です。しかし、これは次の方法で修正できます。
inputmode="decimal"
もちろん、Androidでも問題なく動作します。
:)
テンキーを表示できるタイプは他にもあります。
Type = "number"を使用すると、何もできません。数字以外は受け付けません。ただし、type = "tel"を使用する場合、それは醜いハックですが、機能します。
これが私の郵便番号の例です:
<input type="tel" id="Address_ZipCode" class="Zip-code" pattern="^\d{2}-\d{3}$" maxlength="6">
ただし、一部の画面キーボードでは「-」キーに問題があります。JavaScriptで指定された文字数の後にダッシュを追加すると、次のようにこの問題を回避できます。
// Zip Code dashes
$('input[type="tel"].zipCode').keyup(function(event) {
var t = event.target, v = t.value;
if (v.length == 2) { t.value = v + '-'; }
});
(jQueryを許してください)。 type = "tel"を使用する代わりに、type = "text"とpatternプロパティを使用できますが、まだテストしていません。ほとんどの場合、ほとんどのブラウザでは機能しません。
今のところ、その解決策は見つかりませんでした。
ただし、考えられるトリックの1つは、type = "number"を使用し、javascriptでdocument.getElementById( "element")。type = "text";を使用して変更することです。
ただし、これによりABCもクリアされますが、数値のコンマと小数は受け入れられます。
この回避策を試してください。私のために働いた。
タイプを数字に変えてから、テキストに戻ります。これにより、最初の小道具の変更時にiosが数値キーボードに切り替わります。 setSelectionRange
は、入力値を選択するためのものです。
$(function(){
$("input[type='text']").on('mouseup', function(e){
e.preventDefault();
});
$("input[type='text']").on('focus click', function(e){
$(this).prop('type', 'number');
var obj = $(this);
setTimeout(function(){
obj.prop('type', 'text');
document.getElementById(obj.attr('id')).setSelectionRange(0, 9999);
}, 50);
});
});