【问题标题】:MVC3 jquery.validate.unobtrusive override options without editing source?MVC3 jquery.validate.unobtrusive 覆盖选项而不编辑源?
【发布时间】: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;
    }

只是想知道是否有人想出了一种无需修改源即可覆盖选项的方法..

干杯

【问题讨论】:

    标签: jquery asp.net-mvc-3 validation unobtrusive-validation


    【解决方案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() 中调用这个,而是直接调用)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 2017-10-26
      • 2023-03-03
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多