Javascript 如何使用jQuery Validate的角度实现应用类级验证规则
我使用jqueryvalidate的便捷函数将规则应用于给定类的所有元素,而不是依赖元素的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函数?我需要做
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”
放在元素上。我还填写了一些唯一的bsname
值。一切都很顺利:)@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" ...