Javascript - 验证,仅限数字

Ant*_* Do 28 javascript validation numbers

我试图让我的登录表单只验证是否只输入了数字.如果输入只是数字,我可以工作,但是当我在数字后键入任何字符时,它仍然会验证等.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)")
        }
}
Run Code Online (Sandbox Code Playgroud)

aps*_*ers 34

匹配/^\d+$/. $表示"行尾",因此在初始运行数字后的任何非数字字符都将导致匹配失败.

编辑:

RobG明智地建议更简洁/\D/.test(z).此操作测试您想要的反转.true如果输入具有任何非数字字符,则返回.

简单地省略否定! 和使用if(/\D/.test(z)).

  • @ apsillers-而不是`/\D/.test(z)`,更短更简单. (9认同)

Max*_*Max 21

这里是如何验证输入只接受数字,这将接受像123123123.41212313这样的数字

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

并且这不接受输入点(.),所以它只接受整数

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

这样你就不会允许用户输入任何数字


kub*_*bio 8

这个对我有用:

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)")
  }

}
Run Code Online (Sandbox Code Playgroud)


Ata*_*CSE 5

迟到的答案,但可能这会帮助某人

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}
Run Code Online (Sandbox Code Playgroud)

使用会像

nn=document.forms["myForm"]["num"].value;

ans=isNumber(nn);

if(ans)
{
    //only numbers
}
Run Code Online (Sandbox Code Playgroud)

这个答案是从这里以巨大的投票发现的

在 JavaScript 中验证数字 - IsNumeric()


Ana*_*yst 5

最简单的解决方案。

感谢我的伙伴给了我这个答案。

您可以在输入文本框上设置onkeypress事件,如下所示:

onkeypress="validate(event)"

然后使用正则表达式,如下所示:

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

它将扫描并删除与字段中的数字不同的任何字母或符号。


Nik*_*ita 5

function validateNumber(e) {
            const pattern = /^[0-9]$/;

            return pattern.test(e.key )
        }
Run Code Online (Sandbox Code Playgroud)
 
 <input name="username" id="username" onkeypress="return validateNumber(event)">
Run Code Online (Sandbox Code Playgroud)

这种方法不会锁定 numlock 数字、箭头、主页、结束按钮等