使用属性进行的Bassistance验证。语法是什么?

时间:2012-09-13 01:04:47

标签: jquery validation jquery-validate

根据文档 - 例如 - 您可以使用属性指定需要输入元素参数的验证。它说这是推荐的方法。像这样:

<input type="password" minlength="6" maxlength="50"/>

好的,这很容易。现在如何使用html属性指定(例如)范围?

<input type="number" range="[5, 50]"/>

不,这不起作用。没有括号,花括号,花括号和括号或其任何组合。但这种方式完全出乎意料:

<input type="number" range="53"/> 

- 它会发出错误消息“号码必须介于5和3之间”

有人可以告诉我正确的语法吗?

注意:这是一个范例。我意识到我可以通过使用

来解决这个特殊问题
<input type="number" min="5" max="50"/> 

我正在寻找关于如何使用jquery-validate属性API构建复杂验证规则的更一般的答案。

谢谢!

修改

这是另一个例子。如何使用“首选”属性语法执行此操作?

$('form').validate({
    rules: {
        rt: {
          required: function(element) {
            return $("#age").val() < 13;
          }  
        }
    }
});

以下不起作用:

<form>
    <input type="text" id="age" name="age"/>
    <input type="text" id="rt" name="rt" required="function(element) { return $('#age').val() < 13;}"/>

    <input type="text" id="tabcatcher"/>
    <input type="submit"/>
</form>

使用以下jsfiddle播放:

http://jsfiddle.net/GKNZF/

2 个答案:

答案 0 :(得分:3)

在更一般的情况下,没有关于可以通过添加类来调用哪些验证的文档,可以通过添加属性和参数/表达式/函数来调用,并且不能通过属性调用。从代码中,这里是一个验证列表,可以通过将它们的名称添加到类列表来调用:

需要
电子邮件
网址
日期
dateISO

数字
信用卡

我知道的验证可以通过属性调用:

分钟
最大

MINLENGTH MAXLENGTH
等于

未知。没有任何语法文档可以使这些工作,也没有文档说它们不起作用:

回调需要

表达要求的 远程

由于长期存在错误而无效:

范围
rangelength

答案 1 :(得分:1)

这是插件中已知的问题/错误,正如报告 here 。基本上,插件将53视为两位数的数组,其中5为最小值,3为最大值。

要解决此问题,您需要应用以下补丁:

// Patch by Chris Tierney (CF Webtools 7/13/2011)
// Issue logged at https://github.com/jzaefferer/jquery-validation/issues/112
$.each(['rangelength', 'range'], function() {
    if (typeof rules[this] == 'string') {
        rules[this] = rules[this].split(",");
    }
    if (rules[this]) {
        rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
    }
});