我创建了一个表单来将某些值更改为我当前的用户配置文件 我的主窗体包含多个控件。 如果我没有填写旧密码和新密码,我不希望通过不显眼的验证将字段切换到错误状态。
以下代码可以运行一次。
我的意思是,如果两个字段都是空的,则忽略它们。 下次,代码传入//#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");
}
}
你能帮我解释为什么它只能运作一次吗?
答案 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");
}
}