Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery Validate的角度实现应用类级验证规则_Javascript_Jquery_Angularjs_Jquery Validate_Angular Validation - Fatal编程技术网

Javascript 如何使用jQuery Validate的角度实现应用类级验证规则

Javascript 如何使用jQuery Validate的角度实现应用类级验证规则,javascript,jquery,angularjs,jquery-validate,angular-validation,Javascript,Jquery,Angularjs,Jquery Validate,Angular Validation,我使用jqueryvalidate的便捷函数将规则应用于给定类的所有元素,而不是依赖元素的name属性值。在使用时,我发现addClassRules函数不受开箱即用的支持。我试图修改angular validate.js以引入此功能,但没有成功。文件很小,所以我将在下面粘贴整个内容,并进行修改。跳到TL;如果您愿意的话,请在末尾添加DR angular-validate.js(有一个修改) 错误是: 我有没有办法在其内部使用jqueryvalidate的addClassRules函数?我需要做

我使用jqueryvalidate的便捷函数将规则应用于给定类的所有元素,而不是依赖元素的
name
属性值。在使用时,我发现
addClassRules
函数不受开箱即用的支持。我试图修改
angular validate.js
以引入此功能,但没有成功。文件很小,所以我将在下面粘贴整个内容,并进行修改。跳到TL;如果您愿意的话,请在末尾添加DR

angular-validate.js(有一个修改) 错误是:

我有没有办法在其内部使用jqueryvalidate的
addClassRules
函数?我需要做什么修改?或者,是否有更好的方法将验证规则应用于除
name
属性以外的其他属性上的多个元素

我已经使用jqueryvalidate的便利的
addClassRules
函数将规则应用于给定类的所有元素

这不是该方法要解决的问题。它用于将多个标准规则组合成一个“复合”规则,可以使用一个类名应用该规则


或者,是否有更好的方法将验证规则应用于除
name
属性以外的其他属性上的多个元素

如果您只是想使用类名应用单个规则,那么插件足够智能,可以选择这些规则,并且不需要特殊的技术或方法

<input type="text" class="required email" name="foo" ...
演示:



注意:这些只是应用规则的可选方法

谢谢你提供的信息,你给了我一些调查的机会。至于必须有一个
名称
属性,你为什么这么说?在我的例子中,我有几十个相同形式的
input
元素需要相同的验证。我不需要
name
属性,当然也不想重复名称。此外,我使用
$scope
模型属性发布表单,而不是传统的发布。在过去,即使使用jQuery验证,我也可以省略
name
属性。至于使用类名应用单个规则,我会试一试,但我不喜欢CSS的侵入性。@JacobStamm,我不记得说过复制
name
属性是可以的。但是,如果您认为可以使用jQuery Validate而不使用
name
属性,请尝试:~或者只是阅读文档:我知道以前我已经让jQuery Validate在没有
name
属性的情况下工作得很好,但是您是对的,文档很清楚。我可能只是幸运地实现了:)。关于解决方案:我知道CSS类可以很好地工作,但我不想在某个时候应用意外的样式,所以我将使用
data-
属性。我还去掉了我的
addClassRules
东西,直接使用名为“hours”的自定义方法,将
data rule hours=“true”
放在元素上。我还填写了一些唯一的bs
name
值。一切都很顺利:)@JacobStamm,不客气,我很高兴现在一切都解决了。然而,不管幸运与否,如果没有
name
属性,你就不可能让这个插件正常工作。共有6000多个问题,带有jQuery验证和。。。这个问题已被打得要死。否则,我和其他人会对你是如何做到这一点非常感兴趣。我相信你的话。据我所知,我的服务器端HTML预处理是在客户端没有注意到的情况下添加
name
属性。
angular.module("PageModule", ['ngValidate'])
    .config(function($validatorProvider) {
        $validatorProvider.setDefaults({
            errorClass: "error custom-error-class" // this works fine
        })
        $validatorProvider.addMethod("customValidationMethod", function (value) {
                var isValid = false;
                // do stuff
                return isValid;
            }, "Bleh"
        ); // this works fine too
        $validatorProvider.addClassRules("emailField", {
            email: true
        }); // this crashes :(
    });
<input type="text" class="required email" name="foo" ...
<input type="email" required="required" name="foo" ...