0

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

以下代码工作一次。

我的意思是,如果两个字段都为空,则它们将被忽略。下一次,代码传入 //#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");
}

}

你能帮我理解为什么它只工作一次吗?

4

1 回答 1

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");
}

}

于 2013-08-28T08:58:50.047 回答