通过调用 ASP.NET 按钮单击从 jQuery 模态对话框回发

Posted

技术标签:

【中文标题】通过调用 ASP.NET 按钮单击从 jQuery 模态对话框回发【英文标题】:Postback from jQuery Modal Dialog by invoking ASP.NET Button Click 【发布时间】:2015-01-20 04:18:02 【问题描述】:

我有一个 ASP.NET Web 表单应用程序。当用户单击提交按钮时,我试图显示一个模态对话框以进行确认。我正在使用按钮的 OnClientClick 来调用 javascript 函数。如果页面验证成功,该函数将打开模式对话框。当用户单击模式对话框的“是”按钮时,我希望提交表单。我尝试了 _doPostback(btn, 'OnClick')、btn.trigger('click') 和 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】:

您的 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');

应该可以的。

【讨论】:

糟糕。我现在更正了。谢谢!页面正在发布,但未调用 btnSubmit_Click。我该怎么做? @Code.me 我已经更新了帖子以包括如何使用 __doPostBack 调用您的 btnSubmit_Click 事件。

以上是关于通过调用 ASP.NET 按钮单击从 jQuery 模态对话框回发的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 按钮单击未通过 jquery 在隐藏字段中触发大量数据

jquery用按钮刷新div单击asp .net

在 PostBack (ASP.NET) 上运行 jQuery 函数

ASP.NET 按钮单击清除 jQuery 水印

在 ASP.net MVC 5 应用程序中单击按钮时使用 JavaScript/jQuery 将用户重定向到页面

使用 JQuery $.AJAX 调用调用 ASP.NET 函数