asp.net mvc4 jquery validate 弹出框提示

2013 年 2 月 26 日3290

欢迎进入.NET社区论坛,与300万技术人员互动交流 >>进入

最近的项目采用了asp.net mvc4.有个需求,需要实现jquery validate的验证消息提示采用弹出框方式.默认的jquery.validate.unobtrusive.js实现中没有这样的功能,只要稍加修改就可以满足我们的需求.

添加onDialog:

function onDialog(errmap, errorList) {

var messages = “”;

$.each(errorList, function (index, value) {

messages += value.message;

});

//测试用

if(messages!=“”){

alert(messages); }

}

修改validattionInfo:

function validationInfo(form, dialog) {

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)

},

attachValidation: function () {

$form.validate(this.options);

},

validate: function () { // a validation function that is called by unobtrusive Ajax

$form.validate();

return $form.valid();

}

};

if (dialog) {

result.options.showErrors = $.proxy(onDialog, form);

result.options.onfocusout = false;

reuslt.options.onkeyup = false;

}

$form.data(data_validation, result);

}

return result;

}

修改$jQval.unobjtrusive:

$jQval.unobtrusive = {

adapters: [],

parseElement: function (element, skipAttach, dialog) {

/// <summary>

/// Parses a single HTML element for unobtrusive validation attributes.

/// </summary>

/// <param name=“element” domElement=“true”>The HTML element to be parsed.</param>

/// <param name=“skipAttach” type=“Boolean”>[Optional] true to skip attaching the

/// validation to the form. If parsing just this single element, you should specify true.

/// If parsing several elements, you should specify false, and manually attach the validation

/// to the form when you are finished. The default is false.</param>

var $element = $(element),

form = $element.parents(“form”)[0],

valInfo, rules, messages;

if (!form) { // Cannot do client-side validation without a form

return;

}

valInfo = validationInfo(form, dialog);

valInfo.options.rules[element.name] = rules = {};

valInfo.options.messages[element.name] = messages = {};

$.each(this.adapters, function () {

var prefix = “data-val-” + this.name,

message = $element.attr(prefix),

paramValues = {};

if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)

prefix += “-”;

$.each(this.params, function () {

paramValues[this] = $element.attr(prefix + this);

[1][2]下一页

【责编:peter】

0 0