繁体   English   中英

ASP.Net-Esc键停止我的“发送电子邮件”代码

[英]ASP.Net - Esc Key Stops My 'Send Email' Code

我有一个网页表单,其中一页上有一个提交按钮。 尝试发送电子邮件时,此提交按钮显示处理模式。 如果电子邮件发送,页面将重定向,如果失败,则会显示错误消息。 所有这些都工作正常,但是我发现了一个问题,如果用户按下“ Esc”键,则不会发送电子邮件,也不会落入我的catch 它似乎完全停止了我的电子邮件过程。

我如何确保用户单击该过程仍在进行的Esc键(或其他可能的键)。 我知道一个阶段。

的HTML

    <div class="form-group">
        <div class="col-xs-12">
            <div class="pull-right">
                <asp:LinkButton ID="pg3button" runat="server" OnClick="pg3button_Click" CssClass="btn btn-primary" OnClientclick="ShowPopup();"><span aria-hidden="true" class="glyphicon glyphicon-ok"></span> Send & complete</asp:LinkButton>
            </div>
        </div>
    </div>

    <div class="modal fade" id="myModal" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h4 class="modal-title">
                        <asp:Label ID="lblModalTitle" runat="server" Text="">Processing</asp:Label>
                    </h4>
                </div>
                <div class="modal-body">
                    <asp:Label ID="lblModalBody" runat="server" Text="">
                        <p class="text-center">
                            <img src="../Content/Images/loading.gif" />
                        </p>
                    </asp:Label>
                </div>
            </div>
        </div>
    </div>

    <script>
        function ShowPopup()
        {
           $('#myModal').modal();
        }
    </script>

后面的代码

protected void pg3button_Click(object sender, EventArgs e)
{            
    try
    {
        //Create the msg object to be sent
        MailMessage msg = new MailMessage();

        //Add your email address to the recipients
        msg.To.Add("test@test.co.uk");

        //Configure the address we are sending the mail from
        MailAddress address = new MailAddress("test@test.co.uk");
        msg.From = address;

        //Append their name in the beginning of the subject
        msg.Subject = "Enquiry";

        msg.Body = Label1.Text + " " + Session["pg1input"].ToString()
                    + Environment.NewLine.ToString() +
                    Label2.Text + " " + Session["pg1dd"].ToString()
                    + Environment.NewLine.ToString() +
                    Label3.Text + " " + Session["pg2"].ToString();

        //Configure an SmtpClient to send the mail.
        SmtpClient client = new SmtpClient("smtp.live.com", 587);
        client.EnableSsl = true; //only enable this if your provider requires it

        //Setup credentials to login to our sender email address ("UserName", "Password")
        NetworkCredential credentials = new NetworkCredential("test@test.co.uk", "Password10");
        client.Credentials = credentials;

        //Send the msg
        client.Send(msg);

        Response.Redirect("/Session/pg4.aspx");
    }
    catch
    {
        //If the message failed at some point, let the user know
        lblResult.Text = "<div class=\"form-group\">" + "<div class=\"col-xs-12\">" + "There was a problem sending your request. Please try again." + "</div>" + "</div>" + "<div class=\"form-group\">" + "<div class=\"col-xs-12\">" + "If the error persists, please contact us." + "</div>" + "</div>";
    }
}

使用一些JavaScript IMO,在页面顶部类似这样

<script type="text/javascript">
    document.querySelector("input").addEventListener("keyup",function(e){
    switch (e.keyCode) {

    case 116 : // 'F5'
         event.returnValue = false;
         event.keyCode = 0;
         break;  

    case 27: // 'Esc'
        event.returnValue = false;
        event.keyCode = 0;
        break;

    }
}
</script>

这是如何检查多个键码的示例。 您可以使用相同的逻辑来检查任何种类的按键并按您认为合适的方式进行处理。

如果您需要按键码, 是一个列表

我发现对我有用的修复程序是将以下内容添加到页面顶部:

<script type="text/javascript">
    window.addEventListener('keydown', function (event)
    {
        // if the keyCode is 27 ( Esc )
        if (event.keyCode === 27)
        {
            event.preventDefault();
            return false;
        }

        // if the keyCode is 116 ( F5 )
        if (event.keyCode === 116) {
            event.preventDefault();
            return false;
        }

        // if the keyCode is 8 ( Backspace )
        if (event.keyCode === 8) {
            event.preventDefault();
            return false;
        }
    });
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM