阻止数字输入文本输入

时间:2013-12-16 18:13:59

标签: javascript

我需要为我的学校工作制作一个表格,作为我网站的一部分,我已经完成了表格和许多验证,但我不能做的一件事是数字验证,例如在名字框中我希望它检查数字是否输入,如果是,它将发送错误,我不能这样做,我只能让它在输入数字时发送错误但不输入数字和字符串时,我搜索了这个网站,发现了一些我无法理解的答案。 这是按钮和文本输入的代码

First name: <input type="text" id="firstname" name="firstname" /> <input type="button" id="button" onclick="myFunction()" value="Try it" />

这是脚本的基础:

  function myFunction() {
        var firstname = document.getElementById("firstname").value;
    }

现在我希望如果var(firstname)包含任何数字,将发送错误(“不能使用数字”)消息,我该怎么做?

4 个答案:

答案 0 :(得分:1)

迈克在你的问题中的评论很有帮助。 。 。 HTML5表单验证肯定会成为未来的方式。

话虽如此,仍然有很多旧的浏览器不支持HTML5,但仍然存在,所以JS解决方案可能就是你在这里寻找的。

在这种情况下,我建议使用RegExp检查以查看该值是否符合您的条件:

var regexNumberPattern = new RegExp("[0-9]");

if (regexNumberPattern.test(firstname)) {
    . . . do error stuff . . .
}
else {
    . . . do valid value stuff (if anything) . . .
}

RegExp模式基本上是“找到0到9之间的任何字符”。通过使用.test(STRING_VAL),您将针对特定值(在本例中为“firstname”输入值)测试该模式。 .test()如果在字符串中找到模式,则会返回true,如果没有,则返回false

根据您获得的响应,您可以执行任何您想要处理错误(或缺少错误)的其他逻辑。

答案 1 :(得分:0)

一种解决方案是根据正则表达式计算结果字符串,看它是否只包含字母和空格(或者您允许的任何字符。)

像这样设置你的正则表达式:

var myReg = RegExp('^[A-Za-z ]+$');
var valid = myReg.test(firstname)

你可以使用你想要的任何正则表达式(而且我的注册表很弱,所以请随意接受别人提供的更好的表达。)

我找到的有用工具是debuggex.com。你可以插入一个正则表达式并测试它的作用(虽然你仍然需要知道一些秘密,比如^表示第一个字符而$表示最后一个字符。)

修改

我认为正则表达式的精彩指南是MDN

正则表达式实际上只是一个字符串,它解释了可以检查的文本的某种“模式”;在这种情况下,您可以检查您的字符串是否与“仅包含字母和空格”的“模式”匹配。模式本身有自己的自定义语法,看起来很奇怪,但一旦你理解了语法,它们通常很容易解析(尽管互联网上也充满了疯狂的)。

我写的字面意思是“字符串只传递测试,如果从第一个字符(^开始),它包含给定列表中的一个或多个(+)字符(AZ ,以及该列表中的 ONLY 字符,然后字符串结束。“

Talemyn的表达可能会更好,因为它会检查数字的存在并失败,这听起来就像你在寻找的那样。

答案 2 :(得分:0)

您可以使用正则表达式来检查字母 试试/^[a-zA-Z]*$/

答案 3 :(得分:0)

这应该

<input type="text" name="first_name" pattern="[a-zA-Z]{0,100}">

您可以使用该模式限制为任何固定模式。 更多帮助:

Pattern Link