我有一个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没有被调用。
答案 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');
应该这样做。