检查输入中是否有一个int Javascript

时间:2017-02-28 06:22:28

标签: javascript html error-handling int

我正在处理HTML页面,似乎无法弄清楚如何检查用户输入中是否包含整数。我在for循环中尝试了parseInt,userInput.charAt(i),isNaN。似乎没什么用。

这是我的HTML

<label for="author" id="author">Favorite Book Author: </label>
<input type="text" name="author" id="authorText">

这是我的JavaScript

function checkAuthor(){
    var userInput = $("authorText").value;
    for(var i = 0; i < userInput.length; i++)
    {
        if(userInput.charAt(i) <= 0 || userInput.charAt(i) > 0)
        {
            addError("There is a number in 'Favorite Book Author' input");
            return false;
        }
        else
            return true;
    }
}

我需要查看用户输入的是否有任何整数。如果输入是&#34; Mark5&#34;,&#34; Ma5rk&#34;,&#34; 5&#34;,我需要它来捕获该5并显示错误。反正有可行吗?我有一种感觉.charAt无法正常工作,因为它将整数识别为字符串,但我试图对每一个进行parseInt

var x = parseInt(userInput.charAt(i));
在for循环中

,然后在if语句中比较x。但似乎没有任何效果

addError函数是这个

function addError(text){
    var mylist = window.document.createElement("li");
    var myText = window.document.createTextNode(text);
    mylist.appendChild(myText);
    window.document.getElementByTagName("ul")[0].appendChild(mylist);
}

4 个答案:

答案 0 :(得分:0)

您可以使用正则表达式搜索。

var userInput = $("authorText").value;
if (userInput.search(/[^a-zA-Z]+/)) {
  addError("There is a number in 'Favorite Book Author' input");
return false.
}

答案 1 :(得分:0)

您应该检查48和57之间的字符代码是否

&#13;
&#13;
function checkAuthor(){
    var userInput = $("authorText").value;
    for(var i = 0; i < userInput.length; i++)
    {
        var c = userInput.charAt(i).charCodeAt(0);
        if(c <= 57 && c >= 48)
        {
            addError("There is a number in 'Favorite Book Author' input");
            return false;
        }
           
    }
     return true;

}
&#13;
&#13;
&#13;

答案 2 :(得分:0)

jQuery和JavaScript不一样 您不能在返回的$()中使用value。而是使用val()并使用#来使用ID作为选择器。 使用[0-9]检查数字是否存在。

function checkAuthor(){
    var userInput = $("#authorText").val(); // add # to get ID and val()
    var result = /[0-9]+/.test(userInput);
    result?alert("false"):void(0);
    console.clear();
    console.log(!result);
    return !result;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label for="author" id="author">Favorite Book Author: </label>
<input type="text" name="author" id="authorText" onblur="checkAuthor();" />

答案 3 :(得分:0)

由于您要查找单个数字,因此RejExp测试可能是最简单/最干净的方法。

JQuery的

function checkAuthor(){
    var userInput = $("#authorText").val();

    // check whether any char in userInput is a number. yes: true. no: false
    if(/[0-9]/.test(userInput)) {
        addError("There is a number in 'Favorite Book Author' input");
        return false;
    } else
        return true;
    }
}

function addError(text){
    var mylist = window.document.createElement("li");
    var myText = window.document.createTextNode(text);
    mylist.appendChild(myText);
    window.document.getElementByTagName("ul")[0].appendChild(mylist);
}

Vanilla JS

function checkAuthor(){
    var userInput = document.getElementById('#authorText').value;

    // check whether any char in userInput is a number. yes: true. no: false
    if(/[0-9]/.test(userInput)) {
        addError("There is a number in 'Favorite Book Author' input");
        return false;
    } else
        return true;
    }
}

function addError(text){
    var mylist = window.document.createElement("li");
    var myText = window.document.createTextNode(text);
    mylist.appendChild(myText);
    window.document.getElementByTagName("ul")[0].appendChild(mylist);
}