2017-01-18 4 views
1

ユーザーが0-9の数字を入力できるようにするのは少し苦労しています。 <input type="number" />も同様にeE.+ -などのようなものがあります。入力タイプ= "数字"で0-9の数字のみを許可する(eE。+ - などを除きます)

ここでスタックオーバーフローについては、それぞれが問題を抱えているようです。つまり、入力に数字がない場合は不要な文字を入力することができます。数字を入力した場合、それを完全に削除することはできません。数字が少なくとも1桁である必要があるからです。キーコードを使用して

がキーイベントにavaliableされていないevent.target.valueなどの問題を紹介し、押されたキーをチェックするためにavaliableされていないが、この場合e.whichには、唯一のonchangeで利用可能であるように思われます。

+0

W帽子はあなたの正確な要件ですか? 1つ以上の数字(ただし特殊文字ではない)を入力できるようにしたいですか? –

+1

なぜこれをやりたいですか? – theonlygusti

答えて

1

ユーザーが0〜9の数字だけを入力できるようにしたいのですか?

var input = document.getElementById("only-digits"); 
 
input.onkeydown = function(e) { 
 
    if (48 > e.which || e.which > 57) 
 
    if (e.key.length === 1) 
 
     e.preventDefault(); 
 
};
<input type="number" id="only-digits">

私は確信してthe key the user pressesが自分ASCII値の範囲を使用してのみ0、1、2、... 9文字であることを作っています。

押されたキーがその範囲外であった場合は、それが単語の文字であることを確認して、それがテキストフィールドに入力されないようにします。

+0

これは、ユーザーが数字を削除したり、別の入力に戻るかタブ移動したりするのを防ぎます。 – MT0

+0

私のdownvoteではありませんが、私はまだタブから離れて文字を削除するためにバックスペースキーを使用することはできません(Chrome 54) – MT0

+0

これで複数の '.'文字が可能になりました。 – MT0

0

あなたがHTML入力フィールドに正規表現の属性を使用することができます唯一の0-9文字、ため

<input pattern="[0-9]*"> 

これが可能にゼロまたは複数回

これが唯一の0-9を可能にし文字、1回または複数回

更新

それはタイプ=「数」では動作しません。しかし、これで動作させたい場合は、javascriptを使用する必要があります。これに関するその他の回答を参照してください。

+0

https://jsfiddle.net/4gpf5vv3/ ](https://developer.mozilla.org/en/docs/Web/HTML/Element/input#attr-pattern) – Ilja

+0

['pattern'は' text'、 'search'、' tel'、 'url'、' email'にのみ動作します。これらの不必要な値はすべて入力することができます: – lonesomeday

+0

@Iljaしかし、あなたはそれを提出することはできません、提出時にテストします:https ://jsfiddle.net/4gpf5vv3/1/ –

0

彼/彼女は数

以下のコードに HTMLを参照してください

<input type=number class="numberOnlyInput" oncopy="return false" onpaste="return false" ondrag="return false"> 

以外の任意の文字を入力するときは、ユーザーを防ぐことができますjQueryの

$(document).on('keypress','.numberOnlyInput',function(e){ 
    if(!(e.keyCode >=48 && e.keyCode <=57)){ 
     e.preventDefault(); 
    } 
}); 

あなたはここでデモを見ることができます: https://jsfiddle.net/cnosh74e/

+0

これはうまくいくはずです。私も昨日それに固執していた... –

関連する問題