阻止在文本输入中输入数字

Blocking numbers from being entered into a text input

本文关键字:输入 数字 文本      更新时间:2023-09-26

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

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)包含任何数字,将发送一条错误消息("不能使用数字"),我该怎么做?

Mike在你的问题中的评论很有帮助。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

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

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

一种解决方案是根据正则表达式评估结果字符串,以确定它只包含字母和空格(或您允许的任何字符)

像这样设置正则表达式:

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

你可以使用任何你想要的正则表达式(而且我的reg-fu很弱,所以可以随意接受其他人提供的更好的表达式。)

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

编辑

我认为MDN是正则表达式的一个很好的指南。

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

我写的这句话的字面意思是";只有当字符串从第一个字符(^)开始,包含给定列表中的一个或多个(+)字符(A-Z、A-Z和空格)以及该列表中的only字符,然后字符串结束时,字符串才能通过测试"

Talemyn的表达式可能效果更好,因为它检查数字的存在,但失败了,这听起来就像你在寻找的。

这应该做

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

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

模式链接