更新了底部的问题
我正在尝试验证一个超级简单的表单。最终,用户名将与RegExp语句进行比较,密码也是如此。但是现在我只是想学习Validator addMethod格式。
我目前有这个脚本:
JQuery.validator.addMethod(
"legalName",
function(value, element) {
if (element.value == "bob")
{
return false;
}
else return true;
},
"Use a valid username."
);
$(document).ready(function() {
$("#form1").validate({
rules: {
username: {
legalName: true
}
},
});
});
如果我没有弄错,应返回false并回复“使用有效的用户名”。如果我把“bob”放入表格中。
然而,它只是提交它。
我在标题中链接到JQuery BEFORE Validator,如指示。
我的简单形式如下:
<form id="form1" method="post" action="">
<div class="form-row"><span class="label">Username *</span><input type="text" name="username" /></div>
<div class="form-row"><input class="submit" type="submit" value="Submit"></div>
</form>
最后,我将如何重新构建addMethod函数,以便在if
阶段返回true false
和else
,同时保持false
返回的消息提醒?
(如果你不明白我想说的话,请忽略这最后一部分:))
提前致谢。
感谢所有指出我JQuery
- &gt;的人jQuery
错字。
新 - &gt; RegEx in jQuery Validator addMethod
理想情况下,我试图将其转换为简单的登录表单(用户名/密码)。它仅用于演示,因此它不会附加数据库或任何东西,只是一些简单的js验证。我希望用户名验证为&lt; 48个字符,只有英文字母和数字,没有特殊字符。我认为白名单是最简单的所以我有这样的东西:^[a-zA-Z0-9]*${1,48}
但我不确定这是否是正确的JS RegExp(如果我没有弄错的话,它与Ruby RegExp不同?...通常我使用rubular。 COM)。密码将类似,但需要一些大写/小写和数字。
我相信我需要为$.validator.addMethod
创建一个看起来非常相似的legalPassword
。
修改
将正则表达式更改为^[a-zA-Z0-9]+$
并将maxlength: 48
添加到我的验证函数中。然而,regexp仍然不起作用,据我所知它是正确的。
答案 0 :(得分:4)
您使用的是JQuery
,而不是jQuery
(小j
)。
JavaScript区分大小写......
>>> typeof jQuery
"function"
>>> typeof JQuery
"undefined"
如果$
指向您的jQuery
对象(默认情况下也是如此),那么您可以使用它。
至于你的自定义验证功能,你可以像这样制作那种......
jQuery.validator.addMethod(
"legalName",
function(value, element) {
return (element.value != "bob");
},
"Use a valid username."
);
对于不区分大小写的比较,请先在toLowerCase()
上使用value
。
答案 1 :(得分:1)
我只需将JQuery.validator.addMethod
更改为$.validator.addMethod
即可修复第一部分。
我不完全理解你的第二个问题。如果你描述了你有兴趣实现的行为,也许我可以帮助你实现目标。
答案 2 :(得分:0)
尝试
jQuery.validator.addMethod("legalname", function(value, element) {
var i = /^bob$/i;
return (!(i.test(value)));
}, "Invalid user name");
请参阅 DEMO