有没有办法只接受字母而不是数字?如果给出数字,它应该显示验证错误,因为它只需要字母

Posted

技术标签:

【中文标题】有没有办法只接受字母而不是数字?如果给出数字,它应该显示验证错误,因为它只需要字母【英文标题】:Is there a way to accept only alphabets as input and not numbers? If numbers are given it should show a validation error as it takes only alphabets 【发布时间】:2020-02-29 10:28:06 【问题描述】:

我正在创建一个表单,我在其中提供某些字段。 现在,一个文本类型的输入字段。

我尝试过验证 " required " 但这不是我要寻找的。如果用户提供一个数字作为输入,它应该验证它只需要字母。

<form action="/action_page.php">
  First name: <input type="text" name="fname"><br>
  Last name: <input type="text" name="lname"><br>
  <input type="submit" value="Submit">
</form>

你能帮我在旅途中如何在文本字段中输入并验证是否给出了数字

【问题讨论】:

阅读developer.mozilla.org/en-US/docs/Web/API/Document/keydown_event 【参考方案1】:

您可以使用这样的模式进行验证。

<form action="/action_page.php">
  First name: <input type="text" pattern="[A-Za-z]" name="fname"><br>
  Last name: <input type="text" pattern="[A-Za-z]" name="lname"><br>
  <input type="submit" value="Submit">
</form>

或者验证可以通过 Jquery 来完成。输入字段将不接受除字母以外的任何其他输入。

<!DOCTYPE html>

        <html lang="en">
            <head>
                <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
            </head>
            <body>
               First name <input type="text" pattern="[A-Za-z]" id="fname" name="fname"><br>
               Last name <input type="text" pattern="[A-Za-z]" id="lname" name="lname"><br>
                <script>
                    $( document ).ready(function() 
                        $( "#fname" ).keypress(function(e) 
                            var key = e.keyCode;
                            if (key >= 48 && key <= 57) 
                                e.preventDefault();
                            
                        );
                        $( "#lname" ).keypress(function(e) 
                            var key = e.keyCode;
                             if (key >= 48 && key <= 57) 
                                e.preventDefault();
                            
                         );
                    );
                </script>
            </body>
        </html>

【讨论】:

【参考方案2】:

使用模式

<form action="/action_page.php">
  First name: <input type="text" pattern="[A-Za-z]" name="fname"><br>
  Last name: <input type="text" pattern="[A-Za-z]" name="lname"><br>
  <input type="submit" value="Submit">
</form>

pattern 属性指定一个正则表达式,在提交表单时检查元素的值。

【讨论】:

谢谢。我实际上在寻找相同但有点不同的东西。就像,我想在输入时显示验证,或者当我们进入下一个字段时,它应该提醒应该只给出字母而不是数字。【参考方案3】:

试试下面的 sn-p:

if (!/^([^0-9]*)$/.test($(input).val())) 
  alert("This only accepts alphabets!");

else

  //submit

这个想法是使用正则表达式来验证输入值,然后只是提醒通知客户端。

另一种方法是在按键时立即禁用数字。

    $("input").keypress(function (e) 
    if (!/^([^0-9]*)$/.test(e.key)) 
        return false;
    
);

【讨论】:

以上是关于有没有办法只接受字母而不是数字?如果给出数字,它应该显示验证错误,因为它只需要字母的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在输入字段中显示项目符号而不是数字

如何知道小部件是不是只接受数字字符

使 /afk 命令在 python 中接受数字而不是字母

只接受数字(0-9)和无字符的正则表达式[重复]

在C++中,如何只保留字符串中的数字而去除字母和符号,请给出示例语句,谢谢

只接受字符、数字和特殊字符的正则表达式,而不是 [重复]