ASP.net JQuery:对话框中的Div
我试图创建一个网站的电子邮件共享的东西。在母版页中,我有一个链接,其中有一个jquery click事件触发。在click事件中,在jquery对话框中打开母版页中的一个div。div有一些文本框,用于显示电子邮件、发件人姓名和消息内容。然后它包括两个按钮:一个用于发送电子邮件,另一个用于取消 母版页中的超链接ASP.net JQuery:对话框中的Div,asp.net,Asp.net,我试图创建一个网站的电子邮件共享的东西。在母版页中,我有一个链接,其中有一个jquery click事件触发。在click事件中,在jquery对话框中打开母版页中的一个div。div有一些文本框,用于显示电子邮件、发件人姓名和消息内容。然后它包括两个按钮:一个用于发送电子邮件,另一个用于取消 母版页中的超链接 <a href="#" id="dialog_link" > <asp:Image ID="imgSendEmail" runat="server" Imag
<a href="#" id="dialog_link" >
<asp:Image ID="imgSendEmail" runat="server" ImageUrl="~/images/icons/email.gif" AlternateText="Email"/>
</a>
以下是在jquery对话框中打开的母版页的div:
<div id="dialog" style="text-align: left; background-color: white;">
<h2>Share this with your friends</h2>
<hr style="width: 98%" />
<table width="98%">
<tr>
<td colspan="2">
Title:
<asp:Label ID="lblPageTitle" runat="server" CssClass="blue"></asp:Label><br />
Url:
<asp:Label ID="lblPageUrl" runat="server" CssClass="blue"></asp:Label>
<asp:Label ID="lblTest" runat="server" BackColor="ActiveBorder"></asp:Label>
</td>
</tr>
<tr>
<td colspan="2">
<hr />
</td>
</tr>
<tr>
<td width="15%">
<asp:Label ID="NameLabel" runat="server" AssociatedControlID="txtName" Text="Your Name" />
</td>
<td width="*">
<asp:TextBox ID="txtName" runat="server" TabIndex="1" Width="70%" />
<asp:RequiredFieldValidator ID="NameRequired" runat="server" Display="Dynamic" ControlToValidate="txtName" ErrorMessage="Name is required." ToolTip="Name is required." ValidationGroup="SendEmail">*</asp:RequiredFieldValidator>
<br />
</td>
</tr>
<tr>
<td>
<asp:Label ID="EmailLabel" runat="server" AssociatedControlID="txtEmail" Text="Email To"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtEmail" runat="server" TabIndex="2" Width="70%"></asp:TextBox>
<asp:RequiredFieldValidator ID="EmailRequired" runat="server" Display="Dynamic" ControlToValidate="txtEmail" ErrorMessage="Email is required." ToolTip="Email is required." ValidationGroup="SendEmail">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="regexEmail" runat="server" ControlToValidate="txtEmail" CssClass="red" Display="Dynamic" ErrorMessage="Please enter a valid email address" ValidationGroup="SendEmail" ValidationExpression="^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$"></asp:RegularExpressionValidator>
<br />
</td>
</tr>
<tr>
<td>
<asp:Label ID="MessageLabel" runat="server" AssociatedControlID="txtMessage" Text="Message"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtMessage" runat="server" TabIndex="3" TextMode="MultiLine" Columns="6" Rows="6" Width="98%" Font-Size="Small" Text="Check this out!" />
<asp:RequiredFieldValidator ID="MessageRequired" runat="server" Display="Dynamic" ControlToValidate="txtMessage" ErrorMessage="Message is required." ToolTip="Message is required." ValidationGroup="SendEmail">*</asp:RequiredFieldValidator><br />
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="btnSend" runat="server" Text="Send" ValidationGroup="SendEmail" CausesValidation="true" TabIndex="4" OnClick="btnSend_Click" />
<asp:Button ID="btnCancel" runat="server" Text="Cancel" TabIndex="5" OnClick="btnCancel_Click" />
</td>
</tr>
<tr>
<td colspan="2">
<asp:Label ID="lblError" runat="server"></asp:Label>
</td>
</tr>
</table>
</div>
如果电子邮件无效(例如。xyz@xyz.com)时,通过验证,将引发异常。在向用户显示此异常之前,对话框窗口将关闭。如果再次单击超链接,对话框将打开div,所有以前的数据仍在文本框中,异常显示在错误标签中。
因此,我希望保持对话框窗口打开,并首先在错误标签中显示异常。此外,在退出对话框时,我希望清除div文本框,以便下次用户打开电子邮件超链接时,文本框中没有数据
我注意到的另一件奇怪的事情是,jquery中的email send按钮有客户端事件,该事件应该在同一按钮的服务器端事件完成后触发。不管它怎么也不会开火
$("#btnSend").click(function () {
alert("In btn Email Send");
$("#dialog").dialog("close");
});
$("#form1 input[name=btnSend]").click(function () {
alert("In btn Email Send click 2");
$("#dialog").dialog("close");
});
所有这些事件都不会引起
任何帮助都将不胜感激。1:由于这是一次回发,您的对话框将关闭。你必须考虑在按钮点击时发送电子邮件。 2:定义对话框的处理程序并清除所有文本框。因此,当对话框关闭时,tbs将被清除 3:我认为您的客户端单击事件没有触发,因为找不到您的btnSend。默认情况下,ASP.NET会将BTN发送的id更改为其他id
试着这样做:
$(“#”)
1:因为这是一个回发操作,所以对话框关闭。你必须考虑在按钮点击时发送电子邮件。
2:定义对话框的处理程序并清除所有文本框。因此,当对话框关闭时,tbs将被清除
3:我认为您的客户端单击事件没有触发,因为找不到您的btnSend。默认情况下,ASP.NET会将BTN发送的id更改为其他id
尝试这样做:
$(“#”)如果您不想按照gbs的建议使用Web服务路径,也可以让btnSend\u单击在页面重新加载时将脚本注入页面
ClientScript.RegisterStartupScript(this.GetType(),"reOpenDialog", "<script>dlg.dialog('open');</script>");
ClientScript.RegisterStartupScript(this.GetType(),“重新打开对话框”,“dlg.dialog('open');”;
您也可以在此时将插入验证错误放入对话框。如果您不想按照gbs的建议执行Web服务路径,也可以让btnSend\u单击在页面重新加载时将脚本插入页面
ClientScript.RegisterStartupScript(this.GetType(),"reOpenDialog", "<script>dlg.dialog('open');</script>");
ClientScript.RegisterStartupScript(this.GetType(),“重新打开对话框”,“dlg.dialog('open');”;
您也可以在此时将插入验证错误放入对话框。在#3上,增加了一个注意事项:如果您使用的是.NET 4,您可以设置clientdmode=“Static”
以强制按钮id保持btnSend
@gbs.。感谢您的建议。。。我不想使用ajax…我定义了一个服务器端关闭事件。。。是的,还可以定义dialog的关闭事件…关于#3..不必调用客户端事件。。。它和它一起工作。。。但是感谢您的所有建议…在#3上,有一个补充说明:如果您使用.NET 4,您可以设置ClientIDMode=“Static”
以强制按钮id保持btnSend
@gbs.。感谢您的建议。。。我不想使用ajax…我定义了一个服务器端关闭事件。。。是的,还可以定义dialog的关闭事件…关于#3..不必调用客户端事件。。。它和它一起工作。。。但是谢谢你的建议。。。
ClientScript.RegisterStartupScript(this.GetType(),"reOpenDialog", "<script>dlg.dialog('open');</script>");