Jquery 非结构化验证数据val属性更改为忽略或不忽略

Jquery 非结构化验证数据val属性更改为忽略或不忽略,jquery,unobtrusive-validation,Jquery,Unobtrusive Validation,我创建了一个表单来更改当前用户配置文件的某些值 我的主窗体包含多个控件。 如果我不填写新旧密码,我不希望非结构化验证将字段切换到错误状态 下面的代码只工作一次 我的意思是,如果两个字段都是空的,它们将被忽略。 下次,代码传入//#2,如果我填充了一个,它仍然会被忽略 $.fn.MyProfile_Save = function () { ///<summary> ///MyProfile save button click handle ///</summary> var

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

下面的代码只工作一次

我的意思是,如果两个字段都是空的,它们将被忽略。 下次,代码传入//#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");
}
$.fn.MyProfile\u Save=函数(){
///
///MyProfile保存按钮单击句柄
///
变量形式=$(“#frmMyProfile”);
///必须验证检查开关字段
var PwdOld=$(“pwdOldPassword”);
var PwdNew=$(“#pwdNewPassword”);
如果((PwdOld.val()+PwdNew.val())=''){
//#1
PwdOld.attr(“数据值”、“假”);
PwdNew.attr(“数据值”、“假”);
}否则{
//#2
PwdOld.attr(“数据值”、“真实”);
PwdNew.attr(“数据值”、“真实”);
}
$.validator.unobtrusive.parse(表单);
if(form.valid()){
警告(“表格有效”);
}否则{
警告(“表格无效”);
}
}


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

我终于找到了解决方案:

$.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");
}
$.fn.MyProfile\u Save=函数(){
///
///MyProfile保存按钮单击句柄
///
变量形式=$(“#frmMyProfile”);
///必须验证检查开关字段
var PwdOld=$(“pwdOldPassword”);
var PwdNew=$(“#pwdNewPassword”);
如果((PwdOld.val()+PwdNew.val())=''){
PwdOld.addClass(“忽略”);
PwdNew.addClass(“忽略”);
}否则{
PwdOld.removeClass(“忽略”);
PwdNew.removeClass(“忽略”);
}
$.validator.unobtrusive.parse(表单);
var设置=$.data(表单[0],“验证程序”).settings;
settings.ignore=“.ignore”;
$.validator.unobtrusive.parse(表单);
if(form.valid()){
警告(“表格有效”);
}否则{
警告(“表格无效”);
}
}