我使用jquerylive插件向.field-validation-error类添加额外的css类,如下所示:
$(".field-validation-error").livequery(function () {
$(this).addClass('ui-state-error ui-corner-all');
});
当我得到jquery.validate生成的这个类的一些跨度时,上面的代码可以工作,但是在第二次验证时它没有。
这是实时链接: http://mrgsp.md:8080/awesome/person 单击“保存”后单击“创建”以获取验证消息,然后再次单击“保存”
答案 0 :(得分:1)
你能不只是errorClass选项?
$(".selector").validate({
errorClass: "field-validation-error ui-state-error ui-corner-all"
})
或者也许:
$.validator.setDefaults({
errorClass: "field-validation-error ui-state-error ui-corner-all"
});
答案 1 :(得分:1)
为什么不将函数挂钩到触发validate()的同一事件?
<强>更新强>
我阅读了其他评论,看到你正在使用xVal,也读了一下jQuery.Validate。 jQuery.Validate与许多事件联系在一起并在事件处理程序上注册会很混乱。 livequery第一次工作的原因是,如果标签之前不存在,则生成标签,以便创建事件使函数运行,每次标签被隐藏/显示之后,所以它不会再次触发,而是jQuery。 validate的showLabel函数重置类。
理想的位置是xVal,在xVal.jquery.validate.js
文件中进行一次小的更改。在_ensureFormIsMarkedForValidation
方法中有以下几行:
ensureFormIsMarkedForValidation: function(formElement, options) {
if (!formElement.data("isMarkedForValidation")) {
formElement.data("isMarkedForValidation", true);
var validationOptions = {
errorClass: "field-validation-error",
您需要做的就是将errorClass更改为:
errorClass: "field-validation-error ui-state-error ui-corner-all",
这是因为xVal正在设置validate插件。