在ASP.NET中,如果同一页面有多个文本框,在每个文本框按“回车”按钮,将会默认响应第一个Button的Click事件,怎样能随意的按回车键而不引发意外的响应或者怎样在不同的地方按回车键得到不同的响应,这个问题曾经困扰过我很久,到目前也没有完全解决,先将目前探讨所得与大家分享,以期抛砖引玉。
一、在页面任意的地方按回车键都不引发响应
如果整个页面没有需要设置回车提交的,希望在页面任意的地方按回车键都不引发响应,可以将全页面的回车通通转为Tab,方法是在文件头部加上如下代码:
<script language="javascript" event="onkeydown" for="document">
if(event.keyCode==13)
event.keyCode=9;
</script>
二、在不同的地方按回车键得到不同的响应
如果同一页面上有多个文本框(TextBox),每个文本框对应不同提交按钮(Button),如下列“登录”的页面里,有“输入邮箱号”和“输入帐号”两个文本框和“进入邮箱”、“进入社区”两个按钮。
希望达到的效果是:
1。输入邮箱号后回车,响应“进入邮箱”按钮的事件,简单起见,“进入邮箱”按钮将在“信息显示”文本框内显示“邮箱:****”(其中***为输入的邮箱号),如下图所示:
2。 输入帐号后回车,响应“进入社区”按钮的事件,简单起见,“进入社区”按钮将在“信息显示”文本框内显示“社区:****”(其中***为输入的社区帐号),如下图所示:
实现步骤如下:
1。建立页面和代码文件(此步骤不详细介绍)
2。给form加上onkeydown="keydown()"以屏蔽掉页面的回车响应
keydown()的代码如下:
function keydown() { }
3。给“输入邮箱号”的文本框加上onkeydown="mail();"让它响应“进入邮箱”按钮事件
mail()代码如下:
function mail()
{
if(event.keyCode==13)
{
document.all.MAIL.click();
alert('mail');
}
}
4。给“输入帐号”的文本框加上onkeydown="bbs();"让它响应“进入社区”按钮事件
bbs()代码如下:
function bbs()
{
if(event.keyCode==13)
{
document.all.BBS.click();
alert('bbs');
}
}