0

我想用一个在我的表单上调用 onsubmit 的小 jQuery 函数来验证用户输入客户端。我希望字段 #fname(名字)只允许 az、AZ 和空格。return false 应该是阻止表单提交。

function validateregister(){
    if (!($("fname") =~ [a-zA-Z ])) {
        return false;
    }
}

这是我的 HTML:

<input type="submit" value="Join now!" id="registersubmit" class="paddingoutline2" onsubmit="return validateregister()">

当然,稍后我将在服务器端验证用户输入。当我提交表单时,它给了我一个“内部服务器错误”。这让我觉得我在函数 validateregister() 中犯了一个错误。有什么不对的吗?如果我对 jQuery 很陌生,那么任何帮助都将不胜感激。

谢谢!

4

2 回答 2

5

你想要的是

function validateregister(){
    return /^[a-zA-Z ]+$/.test($('#fname').val());
}

除了修复建议使用val测试功能的选择器外,我还冒昧地更改了正则表达式:

  • ^$强制测试覆盖整个字符串
  • +至少需要一个字符

但是你知道如果你想让人们输入他们的真实名字,这个正则表达式可能太严格了吗?例如,您的不会通过...

于 2013-03-28T14:42:22.963 回答
1

您必须以这种方式使用正则表达式:

function validateregister(){
    var nameRgx = /[a-zA-Z]/;
    var phoneRgx = /[0-9]/;
    if (!nameRgx.test($("#fname").val())) {
       return false;
    }
    if (!phoneRgx.test($("#phone").val())) {
       return false;
    }
}

并确保使用带有#id 表示法或.类表示法的 Either 引用您的元素。在您的代码中,您没有以正确的方式引用您的元素。

^ ---->Start of a string. 
$ ---->End of a string. 
. ----> Any character (except \n newline) 
{...}----> Explicit quantifier notation. 
[...] ---->Explicit set of characters to match. 
(...) ---->Logical grouping of part of an expression. 
* ---->0 or more of previous expression. 
+ ---->1 or more of previous expression. 
? ---->0 or 1 of previous expression; 
       also forces minimal matching when an expression might 
       match several strings within a search string. 

有关正则表达式写作的更多信息

于 2013-03-28T14:50:30.120 回答