不显眼的验证data-val属性更改为忽略与否

时间:2013-08-28 07:27:44

标签: jquery unobtrusive-validation

我创建了一个表单来将某些值更改为我当前的用户配置文件 我的主窗体包含多个控件。 如果我没有填写旧密码和新密码,我不希望通过不显眼的验证将字段切换到错误状态。

以下代码可以运行一次。

我的意思是,如果两个字段都是空的,则忽略它们。 下次,代码传入//#2,如果我填写一个,它仍然被忽略

$.fn.MyProfile_Save = function () {
///<summary>
///MyProfile save button click handle
///</summary>
var form = $("#frmMyProfile");
///Check witch fields must be validated
var PwdOld = $("#pwdOldPassword");
var PwdNew = $("#pwdNewPassword");
if ((PwdOld.val() + PwdNew.val()) == '') {
    //#1
    PwdOld.attr("data-val", "false");
    PwdNew.attr("data-val", "false");
} else {
    //#2
    PwdOld.attr("data-val", "true");
    PwdNew.attr("data-val", "true");
}
$.validator.unobtrusive.parse(form);
if (form.valid()) {
    alert("form valid");
} else {
    alert("form NOT valid");
}

}

你能帮我解释为什么它只能运作一次吗?

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案:

$.fn.MyProfile_Save = function () {
///<summary>
///MyProfile save button click handle
///</summary>
var form = $("#frmMyProfile");
///Check witch fields must be validated
var PwdOld = $("#pwdOldPassword");
var PwdNew = $("#pwdNewPassword");
if ((PwdOld.val() + PwdNew.val()) == '') {
    PwdOld.addClass("ignore");
    PwdNew.addClass("ignore");
} else {
    PwdOld.removeClass("ignore");
    PwdNew.removeClass("ignore");
}
$.validator.unobtrusive.parse(form);
var settings = $.data(form[0], 'validator').settings;
settings.ignore = ".ignore"; 
$.validator.unobtrusive.parse(form);
if (form.valid()) {
    alert("form valid");
} else {
    alert("form NOT valid");
}

}