Jquery提交不起作用

时间:2012-04-12 14:59:46

标签: jquery .net partial-views

我有一个最初适用于$(form).submit()的功能。我必须修改它才能在$("#savebutton").click()上工作,因为主视图中已经有一个form.sumbit()函数。唯一的问题是,当单击按钮并且状态有效时,表单停止提交。 旧代码

$(document).ready(function () {
    $("form").submit(function (e) {
        e.preventDefault(); //prevent default form submit
        $.ajax({
            url: '@Url.Action("HasJobInProgress", "ClientChoices")/',
            data: { id: '@Model.ClientId' },
            success: function (data) {
                showMsg(data);
            },
            cache: false
        });
    });
});

function showMsg(hasCurrentJob) {
    if (hasCurrentJob == "True") {
        alert("The current clients has a job in progress. No changes can be saved until current job completes");
        return false;
    } else {
       $("form").unbind('submit').submit();
    }
}

CurrentCode

$(document).ready(function () {

    $("#saveButton").click(function (e) {
        e.preventDefault(); //prevent default form submit
        $.ajax({
            url: '@Url.Action("HasJobInProgress", "Shared")/',
            data: { id: '@Model.ClientId' },
            success: function (data) {
                showMsg(data);
            },
            cache: false
        });
    });

    function showMsg(hasCurrentJob) {
        if (hasCurrentJob == "True") {
            alert("The current clients has a job in progress. No changes can be saved until current job completes");
            return false;
        } else {
            $("form").submit();
        }
        return true;
    }
});

更新(仍无效)

$(document).ready(function () {

    $("#saveButton").click(function (e) {
        if ($(e.currentTarget).data('shouldSubmit')) return;
        e.preventDefault(); //prevent default form submit
        $.ajax({
            url: '@Url.Action("HasJobInProgress", "Shared")/',
            data: { id: '@Model.ClientId' },
            success: function (data) {
                showMsg(data, e);
            },
            cache: false
        });
    });

    function showMsg(hasCurrentJob, e) {
        if (hasCurrentJob == "True") {
            alert("The current clients has a job in progress. No changes can be saved until current job completes");
            return false;
        } else {
            $(e.currentTarget).data('shouldSubmit', true);
            $("#saveButton").click();
            $(e.currentTarget).data('shouldSubmit', null);
        }
        return true;
    }
});

1 个答案:

答案 0 :(得分:1)

This answer使用了可行的技术。基本上以编程方式再次单击相同的按钮,并使用一个标志来确定它是否在确认方法中被点击(在您的情况下为showMsg)。