当我按下back
按钮到上一页时,我使用Javascript重定向用户。我碰巧在同一页面上使用JQuery验证插件,它在按下按钮时验证表单。如果表单中有错误,如果表单的所有字段都没有任何错误,则表示无法重定向,同一页面重新加载。
我尝试在表单上使用ignore
取消验证,但它无效。
我就是这样做的:
$("#btnBack").click(function () {
$("aspnetForm").validate().cancelSubmit = true;
SaveEmployeeInfo();
});
以下是表单验证器:
$("#aspnetForm").validate({
rules: {
txtGross: {
required: true,
number: true
},
ddlPay: {
required: true,
notEqual: "0"
},
ddlTax: {
required: true,
notEqual: "0"
}
},
ignore: ".ignore",
});
以下是我添加比较值的方法:
`//It is called for each of the required field in the aspnetForm
$.validator.addMethod("notEqual", function (value, element, param) {
return this.optional(element) || value !== param;
}, "Please choose a value!");
这是我的函数,用于保存员工信息:
function SaveEmployeeInfo() {
var employee = GetEmployee();
defaulted = false;
$.ajax({
type: "POST",
url: window.location.protocol + '//' + window.location.host + window.location.pathname + "/SaveEmployeeInfo",
data: $.toJSON({
saveObject: {
//all of the employee related information here
}
}),
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data, st) {
if (st == 'success' && data.d != null) {
if (data.d != "undefined") {
if (data.d) {
window.location = window.location.protocol + '//' + window.location.host + "EmployeeInfo.aspx";
}
else {
ShowMessage("Cannot redirect to new employee.");
}
}
}
},
error: function (msg) {
if (!String.isNullOrEmpty(msg.responseText))
ShowMessage(msg.responseText);
}
});
return false;
}
我希望在按下back
按钮时避免调用任何类型的验证器,以便我可以重定向到相应的页面。
答案 0 :(得分:0)
要在仍然使用提交按钮时跳过验证,请在该输入中添加class =“cancel”。
<input type="submit" name="submit" value="Submit"/>
<input type="submit" class="cancel" name="cancel" value="Cancel"/>
请参阅http://jqueryvalidation.org/reference查找“提交时跳过验证”
答案 1 :(得分:0)
在尝试了可能的cancel
和ignore
选项后,我采用了另一种方式,即如果不避免它,则通过验证器。我使用boolean
变量做到了。
我就这样做了:
$("#btnBack").click(function () {
backClick = true;
SaveEmployeeFinancials();
});
$.validator.addMethod("notEqual", function (value, element, param) {
return (!backClick) && (this.optional(element) || value !== param);
}, "Please choose a value!");
每当按下后退按钮时,该函数将返回false,表示我的重定向到另一页。