更新了底部的问题
我正在尝试验证一个 super 简单的表单。最终,用户名将与 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”放入表单中。
但是,它只是提交而已。
我按照指示在 header 中链接到 JQuery BEFORE Validator。
我的 super 简单表单如下所示:
<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 函数以在 else
阶段返回 true if
和 false
,同时保持消息警报返回 false?
(如果您不明白我想说的话,请忽略最后一部分:))
提前致谢。
<小时/>感谢所有指出我的 JQuery
-> jQuery
拼写错误的人。
新 -> RegEx in jQuery Validator addMethod
理想情况下,我试图将其变成一个简单的登录表单(用户名/密码)。它仅用于演示,因此不会附加数据库或任何东西,只是一些简单的 js 验证。我希望使用户名验证 <48 个字符,只有英文字母和数字,没有特殊字符。我认为白名单是最简单的,所以我有这样的东西: ^[a-zA-Z0-9]*${1,48}
但我不确定这是否是正确的 JS RegExp (如果我没记错的话,它与 Ruby RegExp 不同?...通常我使用 rubular.com)。密码将类似,但需要一些大写/小写和数字。
我相信我需要为 legalPassword
制作另一个看起来非常相似的 $.validator.addMethod
。
编辑
将正则表达式更改为 ^[a-zA-Z0-9]+$
并将 maxlength: 48
添加到我的验证函数中。然而,正则表达式仍然不起作用,据我所知它是正确的。
最佳答案
您使用的是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()
。
关于jquery - 简单的 JQuery 验证器 addMethod 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5229028/