2013-08-28 26 views
0

我創建了一個表格一些值更改爲我的當前用戶配置文件 我的主窗體包含多個控件。 如果我沒有填寫舊的和新的密碼,我不希望不加區分的驗證將字段切換到錯誤狀態。Unobstrusive驗證數據-VAL屬性更改爲忽略或不

如下因素代碼工作一次。

我的意思是,如果這兩個字段爲空,它們將被忽略。 下一次,該代碼傳中//#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"); 
} 

}

你能幫我understad爲什麼它只是一個時間?

回答

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

}