在ASP.NET表单上按文本框上的[ENTER]键的默认行为在IE和&之间是不同的。镀铬/ FF?

时间:2014-08-13 03:39:19

标签: html asp.net internet-explorer google-chrome

我做了一点测试ASP.NET Web应用程序只包含default.aspx和target.aspx;在default.aspx上我可以在文本框上输入一个名字,然后我可以点击按钮或按文本框上的ENTER键提交表单。

我注意到,如果我将按钮控件的 UseSubmitBehavior 设置为 True (将按钮在浏览器上呈现为“input type ='submit”按钮),我在文本框中输入名称,然后立即按ENTER键,IE和Chrome / FF之间的默认行为将有所不同:在IE上,将调用服务器端事件处理程序Page_Load但不调用Button1_Click;在Chrome / FF上,将调用Page_Load和Button1_Click;在Chrome / FF上看起来有点棘手,因为我没有点击页面上的Button,但是它仍然调用了服务器端的Button1_Click事件处理程序? IE的默认行为是直接提交表单,而Chrome / FF会尝试在表单上找到第一个“input type ='submit”元素并调用它的click方法来执行提交操作吗? default.aspx的代码如下。非常感谢!

[default.aspx]
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" 
    Inherits="KeyEventTestWeb._default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button" 
                    onclick="Button1_Click" />
        <br />
        <br />
        <asp:Label ID="lblIsPostBack" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>


[default.aspx.cs]
namespace KeyEventTestWeb
{
    public partial class _default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            lblIsPostBack.Text += "IsPostBack=" + IsPostBack.ToString() + 
                                  "<br>";
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            lblIsPostBack.Text += "Button1_Click()" + "<br>";
            Session["name"] = TextBox1.Text;
            Response.Redirect("target.aspx");
        }
    }
}

0 个答案:

没有答案