我创建了一个
jQuery UI模态窗体,我想要该窗体触发回发,但我有困难得到它的工作。
我知道有相当多的文章基于使用SimpleModal插件,我已经尝试适应这些和重写_doPostback函数,但没有快乐。
我认为问题是在我的__doPostBack函数的调用和什么参数应该。是这样的情况吗?
这是我的形式
<form id="summaryForm" runat="server"> <div id="dialog" title="Quick Booking"> <p>Select user from list or enter name in Box</p> <fieldset> <p><label>Is machine going out of the office?</label></p> <asp:RadioButton TextAlign="Left" GroupName="outOfOffice" Text="Yes" ID="optYes" class="radio" runat="server" /> <asp:RadioButton TextAlign="Left" GroupName="outOfOffice" Text="No" ID="optNo" class="radio" runat="server" Checked="true" /> <label for="dropLstUser">User:</label> <asp:DropDownList ID="dropLstUser" runat="server" /> <input type="text" name="txtUser" id="txtUser" value="" class="text" /> <label for="txtStartDate">Start Date:</label> <input type="text" id="txtStartDate" name="txtStartDate" class="datepicker" /> <asp:HiddenField ID="assetField" runat="server" /> <%--<button onclick="performPostBack('summaryForm')">Postback</button>--%> </fieldset> </div> //--------------------------------
这里是JavaScript代码:
<script type="text/javascript"> $(function() { $("#dialog").dialog({ bgiframe: true,height: 300,modal: true,buttons: { 'Close': function() { alert("closing"); $(this).dialog("close"); __doPostBack = newDoPostBack; __doPostBack("aspnetForm",null); } } }); }); function newDoPostBack(eventTarget,eventArgument) { alert("postingback"); var theForm = document.forms[0]; if (!theForm) { theForm = document.aspnetForm; } if (!theForm.onsubmit || (theForm.onsubmit() != false)) { document.getElementById("__EVENTTARGET").value = eventTarget; document.getElementById("__EVENTARGUMENT").value = eventArgument; theForm.submit(); } } </script>
解决方法
创建对话框后,只需将对话框移回表单即可。例:
$("#divSaveAs").dialog({bgiframe:false,autoOpen:false,title:"Save As",modal:true}); $("#divSaveAs").parent().appendTo($("form:first"));
这对我有用。回发工作发现。