【问题标题】:Creating a custom rule in jQuery Validate在 jQuery Validate 中创建自定义规则
【发布时间】:2013-07-10 02:36:47
【问题描述】:

我想为 jQuery validate 添加一个自定义规则,虽然我检查了文档,但我无法找到如何做到这一点。

我想遍历一组隐藏的表单字段。如果字段值为“X”,那么我想将错误类附加到字段。

所以本质上是这样,但作为规则添加到 jQuery 验证中。

$(".myHiddenField").each( function() {
   if($(this).val() == "x") {
    $(this).closest(".foo").appendClass("error");
   }
});

【问题讨论】:

  • 你想循环这个输入,你应该 $(".myHiddenField input").each(function() {})
  • Areschen,我不是在问如何选择元素——而是如何在 jQuery validate fw 中实现这一点。

标签: javascript jquery validation


【解决方案1】:

你可以使用addMethod()

$.validator.addMethod('yourRuleName', function (value, element, param) {
    //Your Validation Here

    return isValid; // return bool here if valid or not.
}, 'Your error message!');


$('#myform').validate({
    rules: {
        field1: {
            yourRuleName: true
        }
    }
});

【讨论】:

  • 让我试一试。谢谢!
  • 请说英语..您不应该使用当地语言,因此您的评论也可能对其他人有所帮助.. =)
  • Ayon sa translate.google:那是什么? yourRuleName 什么名字?或 dun 取决于类、属性或 id?
  • 哦.. 是的,这是您的验证规则的名称,您可以使用任何您想要的名称。
  • 我还没有关注。在您的示例中,如何将错误类应用于最近的字段?
【解决方案2】:

如果您想在不添加实际规则的情况下显示一些自定义错误消息,那么您可以使用showErrors() 方法,但如果您正在处理隐藏字段,则它可能不起作用

var validator = $( "<form-selector>" ).validate();

var errors = {};
$(".myHiddenField").each( function() {
    var $this = $(this);
    if($this.val() == "x") {
        errors[$this.attr('name')] = 'Some error message';
    }
});

validator.showErrors(errors);

【讨论】:

    【解决方案3】:
    $.validator.addMethod("NOTx", function(element,value) {
        return  value != "x";
    }, 'warning word"!');
    

    【讨论】:

    • 展示如何创建一些自定义但不展示如何使用它是非常糟糕的。 Nikko Reyes 的答案比你的要好。