MVC3 jquery.validate.unobtrusive 覆盖选项而不编辑源?
Posted
技术标签:
【中文标题】MVC3 jquery.validate.unobtrusive 覆盖选项而不编辑源?【英文标题】:MVC3 jquery.validate.unobtrusive override options without editing source? 【发布时间】:2012-04-13 15:43:36 【问题描述】:只是想知道在不编辑源 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');
);
但突出显示和取消突出显示不会被覆盖,除非我从脚本中删除不显眼的库..
如果我编辑 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;
只是想知道是否有人想出了一种无需修改源即可覆盖选项的方法..
干杯
【问题讨论】:
【参考方案1】:您可以更改 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()
中调用这个,而是直接调用)。
【讨论】:
以上是关于MVC3 jquery.validate.unobtrusive 覆盖选项而不编辑源?的主要内容,如果未能解决你的问题,请参考以下文章