ASP.net JQuery:对话框中的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

我试图创建一个网站的电子邮件共享的东西。在母版页中,我有一个链接,其中有一个jquery click事件触发。在click事件中,在jquery对话框中打开母版页中的一个div。div有一些文本框,用于显示电子邮件、发件人姓名和消息内容。然后它包括两个按钮:一个用于发送电子邮件,另一个用于取消

母版页中的超链接

<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:&nbsp;&nbsp;
                <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>");