简单的JQuery Validator addMethod无效

时间:2011-03-08 06:14:54

标签: jquery jquery-validate

更新了底部的问题

我正在尝试验证一个超级简单的表单。最终,用户名将与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 falseelse,同时保持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仍然不起作用,据我所知它是正确的。

3 个答案:

答案 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