检查输入是数字还是字母javascript

时间:2013-08-04 10:51:43

标签: javascript html forms input

我在HTML和javascript中使用表单。我希望只有在用户输入 LETTER 并点击submit时才会弹出提醒。

所以我有HTML代码:

<form name="myForm" action="" onsubmit="return checkInp()" method="post">
    First name: <input type="text" name="age">
<input type="submit" value="Submit">   

和javascript代码:

function checkInp()
{
var x=document.forms["myForm"]["age"].value;
if (x consists of any letters) // this is the code I need to change
{
alert("Must input numbers");
return false;
}
}

12 个答案:

答案 0 :(得分:99)

您可以使用isNaN函数来确定某个值是否未转换为数字。示例如下:

function checkInp()
{
  var x=document.forms["myForm"]["age"].value;
  if (isNaN(x)) 
  {
    alert("Must input numbers");
    return false;
  }
}

答案 1 :(得分:24)

使用Regular Expression仅匹配字母。如果你需要做一些更复杂的事情,比如确保它是一定数量的数字,那么获得知识也是一件好事。

function checkInp()
{
    var x=document.forms["myForm"]["age"].value;
    var regex=/^[a-zA-Z]+$/;
    if (!x.match(regex))
    {
        alert("Must input string");
        return false;
    }
}

更好的做法是拒绝任何数字:

function checkInp()
{
    var x=document.forms["myForm"]["age"].value;
    var regex=/^[0-9]+$/;
    if (x.match(regex))
    {
        alert("Must input numbers");
        return false;
    }
}

答案 2 :(得分:10)

您可以使用isNaN功能。如果数据不是数字,则返回true。那将是这样的:

function checkInp()
{
    var x=document.forms["myForm"]["age"].value;
    if (isNaN(x)) // this is the code I need to change
    {
        alert("Must input numbers");
        return false;
    }
}

注意:isNan将10.2视为有效数字。

答案 3 :(得分:4)

你可以使用isNaN()。当数据不是数字时,它返回true。

var data = 'hello there';
if(isNaN(data)){
  alert("it is not number");
}else {
  alert("its a valid number");
}

答案 4 :(得分:4)

只需通过除以1找到余数,即x%1。如果余数为0,则表示x是整数。否则,您必须显示消息“必须输入数字”。即使在字符串,十进制数字等情况下也是如此。

function checkInp()
{
    var x = document.forms["myForm"]["age"].value;
    if ((x%1) != 0) 
    {
        alert("Must input numbers");
        return false;
    }
}

答案 5 :(得分:3)

试试这个:

if(parseInt("0"+x, 10) > 0){/* x is integer */}

答案 6 :(得分:2)

我知道这篇文章很老但是这是我搜索时出现的第一篇文章。我试过@Kim Kling RegExp,但它失败了。在找到这个论坛之前,我已经尝试了几乎所有这里列出的其他变体。最后,除了我创造的这个之外,它们都没有工作;它工作正常,加上它是es6:

    let regex = new RegExp(/[^0-9]/, 'g');
    let x = document.forms["myForm"]["age"].value;

    if (x.match(regex)) {
       alert("Must be a valid number");
            return
    }

答案 7 :(得分:1)

更好(无错误)的代码就像:

function isReallyNumber(data) {
    return typeof data === 'number' && !isNaN(data);
}

这也将处理空字符串。另一个原因是,isNaN("12")等于false"12"是一个字符串而不是数字,因此它应该导致true。最后,您可能感兴趣的bonus link

答案 8 :(得分:1)

function isNumber(data){
    data = data +"e1";                      // Disallow eng. notation "10e2"+"e1" is NaN
    var clean = parseFloat(data,10) / data ; // 1 if parsed cleanly
    return ( data==0 || clean && (data/data) === 1.0);  // Checks for NaN
}

function isInteger(data){
    data = data +"e1";                      // Disallow eng. notation "10e2"+"e1" is NaN
    var clean = parseInt(data,10) / data ; // 1 if parsed cleanly
    return (data==0 ||clean && (data%1) === 0);          // Checks For integer and NaN
}

//Expected pass
console.log(isNumber("0"))
console.log(isNumber("-0.0"))
console.log(isNumber("+0.0"))
console.log(isNumber(0))
console.log(isNumber(-0.0))
console.log(isNumber(+0.0))
console.log(isNumber(1))
console.log(isNumber(-10.0))
console.log(isNumber(+1000.000001))
console.log(isNumber(1))
console.log(isNumber(-10.0))
console.log(isNumber(+1000.000001))

//Expected fail
console.log(isNumber("FF"))
console.log(isNumber("1e1"))
console.log(isNumber("seven"))

答案 9 :(得分:1)

我认为最简单的方法是使用字符串创建一个Number对象,并检查是否在isInteger类本身提供的Number函数的帮助下。

Number.isInteger(Number('1')) //true
Number.isInteger(Number('1 mango')) //false
Number.isInteger(Number(1)) //true
Number.isInteger(Number(1.9)) //false

答案 10 :(得分:0)

如果您关心实数而不是字符串中的数字,那么最好和最现代的方式是typeof(变量)。例如:

var a = 1;
var b = '1';

typeof a: // Output: "number"
typeof b: // Output: "string

答案 11 :(得分:0)

谢谢,我今天使用@ str8up7od答案创建了一个函数,该函数还检查输入是否为空:

    function is_number(input) {
        if(input === '')
            return false;
        let regex = new RegExp(/[^0-9]/, 'g');
        return (input.match(regex) === null);
    }