我想在我的表单上使用一个名为onsubmit的小jQuery函数来验证用户输入客户端。我希望字段#fname(名字)只允许a-z,A-Z和空格。返回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很新,那么任何帮助都会受到赞赏。
谢谢!
答案 0 :(得分:5)
你想要的是
function validateregister(){
return /^[a-zA-Z ]+$/.test($('#fname').val());
}
除了修改选择器建议使用val
和test函数之外,我冒昧地改变了正则表达式:
^
和$
强制测试覆盖整个字符串+
至少需要一个字符但是你知道如果你想让人们输入真正的名字,这个正则表达式可能会过于严格吗?例如,你的传递不会......
答案 1 :(得分: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表示法或.
类表示法引用您的元素。在您的代码中,您没有以适当的方式引用您的元素。
^ ---->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.