无法使用JQuery验证器重定向到另一个页面

时间:2013-10-02 11:24:54

标签: jquery jquery-validate

当我按下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按钮时避免调用任何类型的验证器,以便我可以重定向到相应的页面。

2 个答案:

答案 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)

在尝试了可能的cancelignore选项后,我采用了另一种方式,即如果不避免它,则通过验证器。我使用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,表示我的重定向到另一页。