2012-03-29 34 views
4

只是不知道是否有覆盖的亮点和使用MVC3 jquery.validate.unobtrusive时unhighlight选项,而无需编辑源js文件的方式...MVC3 jquery.validate.unobtrusive覆盖没有编辑源代码的选项?

我已经尝试过:

var elementToValidate = $(element); 
     var form = $(element.form); 
     if (form.length) { 
      //elementToValidate.valid(); 
      form.validate({ 
       highlight: function (element, errorClass, validClass) { 
        $(element).removeClass(errorClass); 
        $(element).closest('td').addClass('alert-error error'); 
       }, unhighlight: function (element, errorClass, validClass) { 
        $(element).removeClass(errorClass); 
        $(element).closest('td').addClass('alert-error error'); 
       } 
      }); 
     } 

但亮点和unhighlight没有被重载,除非从我的脚本,删除不显眼库..

如果我编辑jquery.validate.unobtrusive.js源这似乎只是很好地工作:

function validationInfo(form) { 
     var $form = $(form), 
      result = $form.data(data_validation); 

     if (!result) { 
      result = { 
       options: { // options structure passed to jQuery Validate's validate() method 
        errorClass: "input-validation-error", 
        errorElement: "span", 
        errorPlacement: $.proxy(onError, form), 
        invalidHandler: $.proxy(onErrors, form), 
        messages: {}, 
        rules: {}, 
        success: $.proxy(onSuccess, form), 
        highlight: function (element, errorClass, validClass) { 
         $(element).removeClass(errorClass); 
         $(element).closest('td').addClass('alert-error error'); 
        }, unhighlight: function (element, errorClass, validClass) { 
         $(element).removeClass(errorClass); 
         $(element).closest('td').addClass('alert-error error'); 
        } 
       }, 
       attachValidation: function() { 
        $form.validate(this.options); 
       }, 
       validate: function() { // a validation function that is called by unobtrusive Ajax 
        $form.validate(); 
        return $form.valid(); 
       } 
      }; 
      $form.data(data_validation, result); 
     } 

     return result; 
    } 

只是想知道,如果有人想出了一个方法来覆盖的选项,而无需修改源..

干杯

回答

0

您可以更改jQuery的验证器的默认值:

$.validator.defaults.highlight = function (element, errorClass, validClass) { 
    $(element).removeClass(errorClass); 
    $(element).closest('td').addClass('alert-error error'); 
}; 
$.validator.defaults.unhighlight = function (element, errorClass, validClass) { 
    $(element).removeClass(errorClass); 
    $(element).closest('td').addClass('alert-error error'); 
}; 

在执行onload事件之前执行此操作(即,不要直接在$(document).ready()中调用此操作)。