3种方法:
第一种
protected void Page_Load(object sender, EventArgs e)
{
//Page.Form.DefaultButton = "ASPxbtnCommit";
SetEnterControl(ASPxbtnCommit);
}
public static void SetEnterControl(System.Web.UI.Control Ctrl) //设置页面的默认按钮
{
Page mPage = Ctrl.Page;
string mScript;
mScript = @"<script language=""javascript"">
function document.onkeydown()
{
var e = event.srcElement;
var k = event.keyCode;
if (k == 13) //13代表回车键
{
document.all." + Ctrl.ClientID + @".click();
event.cancelBubble = true;
event.returnValue = false;
}
}
</script>";
if(!mPage.IsClientScriptBlockRegistered("SetEnterControl")) {
mPage.RegisterClientScriptBlock("SetEnterControl",mScript);
}
}
Page.Form.DefaultButton = "ASPxbtnCommit"; 这种方法经过测试不行
第2种
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class btnEnter2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.TextBox2.Attributes.Add("onkeydown", "if(event.keyCode==13) {document.all." + this.Button2.ClientID + ".focus();document.all." + this.Button2.ClientID + ".click();}");
TextBox3.Attributes.Add("onkeydown", "if(event.keyCode==13) {document.all." + this.Button3.ClientID + ".focus();document.all." + this.Button3.ClientID + ".click();}");
this.TextBox4.Attributes.Add("onkeydown", "if(event.keyCode==13) {document.all." + this.Button4.ClientID + ".focus();document.all." + this.Button4.ClientID + ".click();}");
}
protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.Text = "你激活了按钮1";
}
protected void Button2_Click(object sender, EventArgs e)
{
TextBox2.Text = "你激活了按钮2";
}
protected void Button3_Click(object sender, EventArgs e)
{
TextBox3.Text = "你激活了按钮3";
}
protected void Button4_Click(object sender, EventArgs e)
{
TextBox4.Text = "你激活了按钮4";
}
}
第3种
第一步,先编写简单的页面代码,这里我们只需要一个按钮就足够了。当然,还有按钮事件。
<html>
< head>
< title>测试绑定enter</title>
<script type="text/javascript">
function b_onclick()
{
alert("你好!");
}
</script>
< /head>
< body>
< input type="button" value="测试按钮" id="test" onclick="b_onclick()" />
< /body>
< /html>
第二步,于b_onclick()函数加入如下js代码:
function document.onkeydown()
{
//使用document.getElementById获取到按钮对象
var button = document.getElementById("test");
if(event.keyCode == 13)
{
button.click();
event.returnValue = false;
}
}
然后于IE中运行,你会发现,即使焦点不在按钮上,当你按下回车,依然执行了按钮的函数。
稍微解释一下代码:
event.keyCode == 13是判断按下的是那一个间,13代表的是回车键。
button.click();执行按钮事件。
event.returnValue = false;这个是为了防止浏览器捕捉到用户按下回车键而进行其他操作。例如假如输入框中,没有这行代码的话,在执行完按钮事件后,其还会执行换行的动作。
第三步,很多人都认为做完上面的工作已经完成了整个作业。其实不是的。你尝试使用firefox浏览,就会发现,代码并不会执行。显然,这是因为firefox不支持event事件对象。为了做到跨浏览器,不得不将代码进行优化。
我们可以这个做:
首先,为boby添加一个onkeydown监控函数,如<body onkeydown="BindEnter(event)">。
其次修改原来的绑定函数为:
function BindEnter(obj)
{
//使用document.getElementById获取到按钮对象
var button = document.getElementById('test');
if(obj.keyCode == 13)
{
button.click();
obj.returnValue = false;
}
}
为什么要将事件对象作为参数传递呢?这是为了避免进行浏览器判别,节省代码。
OK,到这里已经基本完成了。完整代码如下:
<html>
< head>
< title>测试绑定enter</title>
< script type="text/javascript">
function b_onclick()
{
alert("你好!");
}
function BindEnter(obj)
{
//使用document.getElementById获取到按钮对象
var button = document.getElementById('test');
if(obj.keyCode == 13)
{
button.click();
obj.returnValue = false;
}
}
< /script>
< /head>
< body onkeydown="BindEnter(event)">
< input type="button" value="测试按钮" id="test" onclick="b_onclick()" />
< /body>
< /html>
本文作者:网友 来源:网络