通过调用ASP.NET Button Click从jQuery模式对话框回发

时间:2014-11-21 22:06:29

标签: javascript jquery asp.net modal-dialog postback

我有一个ASP.NET Web表单应用程序。我试图在用户点击“提交”按钮时显示模态对话框以进行确认。我使用Button的OnClientClick来调用JavaScript函数。如果页面验证成功,该函数将打开模态对话框。当用户单击模态对话框的“是”按钮时,我希望提交表单。我尝试了_doPostback(btn,' OnClick'),btn.trigger('点击')和btn.click()。我可以看到模态对话框和取消按钮工作。但是,当我单击是时,页面不会发布。请参阅以下代码并帮助我。谢谢!

ASPX:

<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click"
    OnClientClick="clientValidate();return false;"/>

<div id="alert" style="display: none">
    Are you sure you want to submit?
</div>

JavaScript的:

$(document).ready(function () {
        $('#alert').dialog({
            title: 'Confirm',
            modal: true,
            autoOpen: false,
            buttons: {
                Yes: function () {
                    var btn = document.getElementById('<%=btnSubmit.ClientID%>');
                    //_doPostback(btn, 'OnClick');
                    //btn.trigger('click');
                    //btn.click();
                    // Above three didn't work! :(
                },
                Cancel: function () {
                    $(this).dialog('close');
                }
            }
        });            
    });

function clientValidate() {
        var btnsubmit = document.getElementById(<%=btnSubmit.ClientID%>);
        if (Page_ClientValidate()) {                                
            $('#alert').dialog('open');
        }
    }

更新:

已将_doPostBack()更正为__doPostBack()。该页面现在发布。但是btnSubmit_Click没有被调用。

1 个答案:

答案 0 :(得分:0)

您的doPostBack调用错误。它应该是__doPostBack()而不是_doPostBack() - 应该有两个下划线,你有一个。这可能是它未能开始的原因。

请改为尝试:

buttons: {
            Yes: function () {
                var btn = document.getElementById('<%=btnSubmit.ClientID%>');
                __doPostback(btn, 'OnClick');
            },

更新


试试这个:

在你的代码中,在你的页面加载函数中添加它

if (Page.IsPostBack)
{
    var param = Request["__EVENTARGUMENT"];
    if (target == "Submit")
      btnSubmit_Click(sender, e);
}

在你的Javascript中你会做

__doPostBack(btn, 'Submit');

应该这样做。