首页 新闻 会员 周边 捐助

textbox按回车后,为什么会触发button点击事件?

0
悬赏园豆:10 [已解决问题] 解决于 2017-09-06 08:54
 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
 2 
 3 <!DOCTYPE html>
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 8     <title></title>
 9 </head>
10 <body>
11     <form id="form1" runat="server">
12     <div>
13         
14         <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
15         <br />
16         <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
17         
18     </div>
19     </form>
20 </body>
21 </html>

后端:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if(IsPostBack)
        {
            //
        }
        else
        {
            //
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        this.TextBox1.Text = "我按了Buttion";
    }
}

不知道为什么google浏览器里,我会触发buttion点击事件。。。。。

问题补充:

除了IE兼容模式,其他都会,如果IE不设置localhost到兼容模式列表,也会发生这个事件。

Anson.Mao的主页 Anson.Mao | 初学一级 | 园豆:39
提问于:2017-06-20 11:16
< >
分享
最佳答案
1

首先,你这是个form,form里面的按钮一般为submit按钮,textbox不存在换行,所以你按回车基本上是触发了submit事件,也就是你button的onclick事件,类似于百度的搜索框一样。

你要是不想回车触发按钮可以将你的button放到form外。

收获园豆:10
柿子Boy | 菜鸟二级 |园豆:256 | 2017-06-20 15:11

这就尴尬了,我的textbox是在GridView行里面,整个页面又是集成了模板页的。这个button其实是分页按钮,还有一些其他按钮,估计都会被触发onclick……

Anson.Mao | 园豆:39 (初学一级) | 2017-06-20 15:47

我这个textbox其实回车有指定js函数,只是不希望他刷新页面然后执行页面的其他button的onclick事件。

Anson.Mao | 园豆:39 (初学一级) | 2017-06-20 15:51

业务场景:

一个列表,用户在输入框里输入数量后,其他列会获取用户输入的数量进行库存数量检查,商品的最新单价显示等功能。

Anson.Mao | 园豆:39 (初学一级) | 2017-06-20 15:53

我这个textbox其实回车有指定js函数,只是不希望他刷新页面然后执行页面的其他button的onclick事件。

其他页面的button事件,我可以理解为你写了一个通用的刷新按钮,然后当前页面刷新后会导致其他页面的也会刷新是吗?

柿子Boy | 园豆:256 (菜鸟二级) | 2017-06-20 16:09

@柿子Boy: 是的,这些按钮都是针对GV的通用按钮。有分页数量,有排序等

Anson.Mao | 园豆:39 (初学一级) | 2017-06-20 16:45
其他回答(2)
0

试下其他浏览器呢,如果它们没有触发buttion点击事件,那应该就是Google做的优化,为了提高用户体验(例如:回车时自动搜索)

大志若愚 | 园豆:2138 (老鸟四级) | 2017-06-20 11:49

除了IE兼容模式,其他都会,如果IE不设置localhost到兼容模式列表,也会发生这个事件。

支持(0) 反对(0) Anson.Mao | 园豆:39 (初学一级) | 2017-06-20 12:00

@Anson.Mao: 查看了下生成的html代码,<asp:Button ID="Button3" runat="server" Text="Button" OnClick="Button3_Click" />,最终会生成如下代码:

<input type="submit" name="ctl00$MainContent$Button3" value="Button" id="MainContent_Button3">,为submit按钮,回车时会触发

支持(0) 反对(0) 大志若愚 | 园豆:2138 (老鸟四级) | 2017-06-20 15:25

@大志若愚: 我用的是asp:ImageButton

生成的html代码里的type是image~~~

支持(0) 反对(0) Anson.Mao | 园豆:39 (初学一级) | 2017-06-20 15:59
0

不为什么,就是http 包中url参数部分映射到成员函数而已。

客户端要么是表单要么是js来发起 http包请求。

而客户端对待请求的是有差异的。

—— 上面的是asp:Button只是告诉这个是服务器控件,最终取决于其渲染的html文档(集合)和客户端。

花飘水流兮 | 园豆:13615 (专家六级) | 2017-06-20 14:21

那请教下如何不让textbox按回车后,不会执行button事件?但是要保证button事件能正常用。

支持(0) 反对(0) Anson.Mao | 园豆:39 (初学一级) | 2017-06-20 14:43

onsubmit="return false;" 这个方法让按钮也无法正常使用了,很尴尬~

支持(0) 反对(0) Anson.Mao | 园豆:39 (初学一级) | 2017-06-20 14:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册