0

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

4

2 に答える 2

0

送信ボタンを使用している間に検証をスキップするには、その入力に class="cancel" を追加します。

 <input type="submit" name="submit" value="Submit"/>
 <input type="submit" class="cancel" name="cancel" value="Cancel"/>

http://jqueryvalidation.org/referenceを参照して、「送信時に検証をスキップする」を探してください。

于 2013-10-02T11:36:37.623 に答える
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」を返し、リダイレクトを別のページにレンダリングします。

于 2013-10-03T05:11:58.343 に答える