0

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

<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/

4

2 回答 2

3

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

所需的
电子邮件
url
日期
dateISO
数字
数字
信用卡

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

最小
最大
最小长度最大
长度
等于

未知。没有使这些工作所需的语法文档,也没有文档说它们不起作用:

需要回调
需要表达式
远程

由于长期存在的错误而无法正常工作:

范围范围
长度

于 2012-09-14T05:51:48.333 回答
1

这是插件中的一个已知问题/错误,如此所述。基本上,该插件被视为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])];
    }
});
于 2012-09-13T01:33:04.747 回答