如何实现文本框焦点自动跳转及通过回车键提交表单

该文章讲的是在ASP.NET登录页面中如何实现文本框焦点自动跳转及通过回车键提交表单。
所需的Javascript代码:

<script language="JavaScript">

NS4 = (document.layers) ? true : false;

function checkEnter(event,element)

{    

    var code = 0;

    if (NS4)

        code = event.which;

    else

        code = event.keyCode;

    if (code==13)

     {

         if(element.name=='tbUserName')//tbUserName-用户名文本框的Name

         {

              document.frmLogin.tbPassword.focus();//frmLogin-表单名称,tbPassword-密码文本杠框的Name

         }

         if(element.name=='tbPassword')

         {

              //document.frmLogin.submit();用这种方式提交,Asp.net页面会闪一下,但实际并未提交

              //用下面的代码才能提交,我是从asp.net生成的页面中查看源文件然后复制出来的

              if (typeof(Page_ClientValidate) != 'function' ||  Page_ClientValidate()) __doPostBack('lblLogin','');

         }

     }

}

 

</script>

我将这些代码放在了一个LoginScript.js文件中,然后在Login.cs文件中添加如下代码就实现这样的功能:

tbUserName.Attributes.Add("onKeyPress","checkEnter(event,this)");

tbPassword.Attributes.Add("onKeyPress","checkEnter(event,this)");

System.IO.StreamReader sr=new System.IO.StreamReader(MapPath("Script")+"\\LoginScript.js");

this.RegisterClientScriptBlock("LoginScript",sr.ReadToEnd());

sr.Close();


相关链接:
posted @ 2004-05-26 14:52 dudu 阅读(23355) 评论(18)  编辑 收藏 网摘 所属分类: ASP.NET 1.1

  回复  引用  查看    
#1楼 2004-05-26 15:11 | 吹雪      
我建议这样写:
if(event.keyCode==13)
{
event.keyCode = 9 ;
}


当点击回车的时候去执行 Tab键,这样效果更好 :)
  回复  引用  查看    
#2楼 2004-05-26 15:34 | aierong      
<script language="vbscript">
<!--
Sub document_onkeydown
if window.event.keyCode=13 then
window.event.keyCode=9
end if
End Sub
//-->
</script>


把上面代码放入HTML代码中,控件自动扑获回车,自动把焦点转移到下一个控件
这样就可以按照事先设置好的TabIndex属性转移焦点


  回复  引用    
#3楼 2004-05-26 17:36 | Koffer [未注册用户]
#region 控件获得焦点
/// <summary>
/// 通过 注册并运行脚本 使某个脚本可操作的控件获得焦点。
/// </summary>
/// <param name="strTextBoxOrButtonId"></param>
private void TextBoxOrButton_GotFocus( string strTextBoxOrButtonId )
{
string script = "<script>document.all[\"" + strTextBoxOrButtonId + "\"].focus();</script>" ;
this.RegisterStartupScript( "GotFocus" ,script );
}
#endregion
  回复  引用    
#4楼 2004-05-26 17:38 | koffer [未注册用户]
this.txtSDUTY.Attributes["onkeydown"]="if (event.keyCode==13) {document.all.btnSDUTY.click();return false;}";

#region 如果用户用回车去做的验证
private void btnSDUTY_Click(object sender, System.EventArgs e)
{
TextBoxOrButton_GotFocus(this.txtSLORG.ID);
}
}
  回复  引用    
#5楼 2004-06-09 09:29 | ak47 [未注册用户]
你这些带颜色的关键字是如何弄上去的?
是用一个国外网址转化的吗?
  回复  引用  查看    
#6楼 2004-06-09 09:38 | dudu      
将代码从VS.NET中复制到Word, 再从Word复制过来, 就变成这样了。
  回复  引用    
#7楼 2004-06-18 17:15 | 狮子洋 [未注册用户]
<script language="javascript"> 
<!-- 
function init()
{
document.onkeydown=keyDown 
}

function keyDown(e) { 

if(event.keyCode==13)
{
event.keyCode=9
}


<body  onload="init()">



}
//-->

</script>
这是javascript版的.
  回复  引用    
#8楼 2004-07-08 10:38 | 过客 [未注册用户]
你好
  回复  引用  查看    
#9楼 2004-10-25 12:39 | 奚彧      
焦点是转移了,很多代码都只是转移焦点,但是却不提交表单
  回复  引用    
#10楼 2004-12-26 10:34 | lake2 [未注册用户]
有启发,谢谢各位
  回复  引用  查看    
#11楼 2005-01-24 10:16 | 听棠.NET      
看我发表的 "解决WEB页面上"焦点控制"一法" http://www.cnblogs.com/tintown/archive/2005/01/06/87355.html 比这个经典多了!!!
  回复  引用    
#12楼 2005-03-28 09:30 | killren [未注册用户]
复制粘贴消化
  回复  引用    
#13楼 2005-07-02 10:18 | ascn [未注册用户]
我想做这样的文本框,不知道怎么实现。

文本框的最长字符为10,当输入到10字符后,自动跳转到下一个文本框,请问怎么实现?

烦请帮忙 ascn@tian-jie.com
  回复  引用  查看    
#14楼 2005-07-28 10:32 | 阿新      
<SCRIPT language="javascript">
function keyvalue()
{
if(event.keyCode=="13")
{

if(!(event.srcElement.name=="btnSave"|| event.srcElement.name=="btnReturn") )
{
event.keyCode="9";
}
}
// key=window.event.keyCode;
// alert(key);
// if(key==13)//判断是否按下回车键
// {
// event.keyCode=9;
//CurTabIndex=event.srcElement.tabIndex+1//将当前tabindex的值加1
//for (n=0;n< Form1.elements.length;n++)
//{
// if (Form1.elements[n].tabIndex==CurTabIndex) //找到下一个表单元素
// {
// Form1.elements[n].focus(); //移动焦点
// return true;
// }
// }

// }
}


</script>

我是这样写的,加了判断遇到按钮就不跳了
但代码一定要放在form里面

  回复  引用  查看    
#15楼 2006-08-26 00:47 | stswordman      
顶一个
  回复  引用    
#16楼 2006-12-02 21:44 | Chowkos [未注册用户]
你好,我是初学,近几日被一个小小的登录也搞的头大了,可否给我一个完整的登录代码!
在此,先谢了!
E-MAIL:chowkos@yahoo.com.cn
  回复  引用  查看    
#17楼 2007-11-01 10:50 | Teracy_Joy      
你得登录文本框得那个name一定是"tbUserName"得吗?假如你得登陆框是个控件,那添加到某个页面或者是在母板页里面这个name就发生变化了呀,是否有别的办法呢?




标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-09-12 08:28 编辑过
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接: