ボタンを押したときにユーザーを前のページにリダイレクトするためにJavascriptを使用back
しています。ボタンが押されたときにフォームを検証する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
ボタンが押されたときに、あらゆる種類のバリデーターへの呼び出しを避けて、それぞれのページにリダイレクトできるようにしたいと考えています。