41

数字のみが入力された場合にのみログインフォームを検証しようとしています。入力が数字のみの場合は機能しますが、数字の後に任意の文字を入力すると、検証されます.12akfは機能します. 午前1時が有効です。どうすればこれを乗り越えることができますか?

ログインの一部

<form name="myForm">
    <label for="firstname">Age: </label>
    <input name="num" type="text" id="username" size="1">
    <input type="submit" value="Login" onclick="return validateForm()">

function validateForm()
{

    var z = document.forms["myForm"]["num"].value;
    if(!z.match(/^\d+/))
        {
        alert("Please only enter numeric characters only for your Age! (Allowed input:0-9)")
        }
}
4

14 に答える 14

25

これは、123123123.41212313 のような数字を受け入れる数字のみを受け入れるように入力を検証する方法です。

<input type="text" 
onkeypress="if ( isNaN(this.value + String.fromCharCode(event.keyCode) )) return false;"
/>

これはドット (.) の入力を受け入れないため、整数のみを受け入れます。

<input type="text" 
onkeypress="if ( isNaN( String.fromCharCode(event.keyCode) )) return false;"
/>

このようにして、ユーザーが数字以外を入力することを許可しません

于 2012-10-17T05:57:23.927 に答える
15

これは私のために働いた:

function validateForm(){

  var z = document.forms["myForm"]["num"].value;

  if(!/^[0-9]+$/.test(z)){
    alert("Please only enter numeric characters only for your Age! (Allowed input:0-9)")
  }

}
于 2015-07-03T00:02:43.673 に答える
3

最も簡単な解決策。

この答えをくれたパートナーに感謝します。

次のように、入力テキストボックスにonkeypressイベントを設定できます。

onkeypress="validate(event)"

次に、次のような正規表現を使用します。

function validate(evt){
     evt.value = evt.value.replace(/[^0-9]/g,"");
}

フィールド内の数字と異なる文字や記号をスキャンして削除します。

于 2014-06-13T00:22:42.787 に答える
2

正規表現は素晴らしいですが、それを使って何かをしようとする前に、それが数値であることを確認してみませんか?

function addemup() {
var n1 = document.getElementById("num1");
var n2 = document.getElementById("num2");
sum = Number(n1.value) + Number(n2.value);
    if(Number(sum)) {
        alert(sum);
        } else {
            alert("Numbers only, please!");
        };
    };
于 2013-10-24T06:22:17.213 に答える
2

数字入力制限のための長いコードは必要ありません。このコードを試してみてください。

また、有効な int と float の両方の値を受け入れます。

Javascript アプローチ

onload =function(){ 
  var ele = document.querySelectorAll('.number-only')[0];
  ele.onkeypress = function(e) {
     if(isNaN(this.value+""+String.fromCharCode(e.charCode)))
        return false;
  }
  ele.onpaste = function(e){
     e.preventDefault();
  }
}
<p> Input box that accepts only valid int and float values.</p>
<input class="number-only" type=text />

jQuery アプローチ

$(function(){

  $('.number-only').keypress(function(e) {
	if(isNaN(this.value+""+String.fromCharCode(e.charCode))) return false;
  })
  .on("cut copy paste",function(e){
	e.preventDefault();
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p> Input box that accepts only valid int and float values.</p>
<input class="number-only" type=text />

上記の回答は、最も一般的な使用例 (入力を数値として検証する) に対するものです。

ただし、負の数や無効なキーストロークを削除する前にユーザーに表示するなど、いくつかの特殊なケースを許可するため、そのような特殊な使用例のコード スニペットを以下に示します。

$(function(){
      
  $('.number-only').keyup(function(e) {
        if(this.value!='-')
          while(isNaN(this.value))
            this.value = this.value.split('').reverse().join('').replace(/[\D]/i,'')
                                   .split('').reverse().join('');
    })
    .on("cut copy paste",function(e){
    	e.preventDefault();
    });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p> Input box that accepts only valid int and float values.</p>
<input class="number-only" type=text />

于 2015-06-27T16:49:58.870 に答える
2
function ValidateNumberOnly()
{
if ((event.keyCode < 48 || event.keyCode > 57)) 
{
   event.returnValue = false;
}
}

この関数は、テキストフィールドに数字のみを許可します。

于 2015-03-26T06:25:17.670 に答える