注册 登录
编程论坛 ASP.NET技术论坛

为何在一个页面上将光标放到任何一个TextBox控件上然后按回车键均会触发同一个Butt

foshan 发布于 2007-04-17 09:51, 2096 次点击
为何在一个页面上将光标放到任何一个TextBox控件上然后按回车键均会触发同一个Button控件的Click事件?

以下是该页面的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["logon"] != null)
{
if (Session["logon"].ToString() != "logonSuccess")
{ Response.Redirect("login.aspx"); }
}
else
{
Response.Redirect("login.aspx");
}
if (!IsPostBack)
{
TextBox2.Text = Session["MyHtflPath"].ToString();
//TextBox7.Text = Session["MyHtflId"].ToString();
TextBox3.Text = Session["MyGcxmPath"].ToString();
//TextBox6.Text = Session["GcxmId"].ToString();
}
}
protected void Button2_Click(object sender, EventArgs e) //关闭窗口
{
{ Response.Write("<script>close()</script>"); }
}
10 回复
#2
冰镇柠檬汁儿2007-04-17 10:01
因为页面都有第一个按钮控件,回车就是响应第一个控件的
#3
foshan2007-04-17 10:13
回复:(冰镇柠檬汁儿)因为页面都有第一个按钮控件,...
这样的啊……
但我的这个Button 按钮控件 是第二个 Button2 啊
#4
冰镇柠檬汁儿2007-04-17 10:19

那只是哟你觉得是第二个,而你在设计页面的时候,程序默认的不是你认为的那个

#5
cyyu_ryh2007-04-17 10:24
改红色的地方

<script language="javascript" type="text/javascript">
function document.onkeydown()
{
if(event.keyCode==13)
{
document.getElementById("Button1").click();
return false;
}
}
</script>
#6
foshan2007-04-17 10:27
晕!还有 程序默认的第一个按钮控件……

经测试,与按钮控件的位置有关……
#7
川流不息2007-04-17 10:31
那意思就是你搞定了,個人頂一個,增加等級。
#8
foshan2007-04-17 10:41
以下是引用cyyu_ryh在2007-4-17 10:24:45的发言:
改红色的地方

<script language="javascript" type="text/javascript">
function document.onkeydown()
{
if(event.keyCode==13)
{
document.getElementById("Button1").click();
return false;
}
}
</script>

谢谢!上述代码是实现在页面上按下回车键后执行一个按钮的单击带击事件的。我只是想在页面上按下回车什么变化也没有,看来是要设置一个什么事件也没有的而且是隐藏了的按钮控件。
这样看来,本想将页面上的按钮控件,根据用户的不同权限来显示或隐藏这些按钮控件的想法是存在巨大漏洞的。即使是没有权限的用户进入了界面,而界面中将该用户没有操作权限的按钮隐藏了,用户在页面上多按几下回车键岂不是会触发系统默认的第一个按钮而导致权限被破解???

#9
冰镇柠檬汁儿2007-04-17 10:44
楼主可以给控件提供快捷键,比如ctrl+g什么的
#10
foshan2007-04-17 10:59
晕!即使用了以下代码,如果Button1的Visible的属性设置为 false ,也不会执行Button1的click事件,而会执行系统默认的第一个按钮控件的click事件。
<script language="javascript" type="text/javascript">
function document.onkeydown()
{
if(event.keyCode==13)
{
document.getElementById("Button1").click();
return false;
}
}
</script>
#11
foshan2007-04-17 11:19
好像将页面中所有的按钮控件的 UseSubmitBehavior属性设置为false就可避免在页面上按下回车键触发默认的按钮的click事件。
还有一个办法,在aspx中增加红色部分的代码:<form id="Form1" method="post" runat="server" onkeydown="if(event.keyCode==13){event.returnValue=null;}">
大家有何看法?

[此贴子已经被作者于2007-4-17 11:37:49编辑过]

1