在aspx页面内,如何做到按钮控件的焦点控制顺序(不使用鼠标,用回车键)?

zhenwang 2003-08-21 04:08:26
有一个问题哪位高手能回答:
在 .aspx页面里,所有的控件都集中在一个form里面,比如,在页面的上部我设置了一个textbox控件(id为textbox1)和一个button1,在页面的底部我也设置了一个textbox(id为textbox2)和一个button2,现在,如何才能实现以下功能?
当我在textbox1里输入完文字后,直接敲回车(不是用鼠标),就使焦点转移到button1上,而当我在textbox2里输入完文字后,直接敲回车就会把焦点转移到button2上。
就比如在sohu.com里,首页上部是信箱的登陆按钮,当你在文本框里输入直接敲回车时,它就自动的转到信箱登陆页面。而当你在搜索引擎的文本筐里输入文字,直接敲回车就回自动转到搜索引擎页面。

一般的,如果一个页面两个以上按钮时,你直接敲回车它都回自动默认你是点击第一个按钮。
...全文
341 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhenwang 2003-08-31
  • 打赏
  • 举报
回复
得到大家的启示,我已经解决了这个问题,谢谢各位高手!
alf7927 2003-08-29
  • 打赏
  • 举报
回复
基本思路是这样的,程式是要变通的,我知道你的控件没有ID或是ID不可确定,但是你可以把你这个控件放在一个Table中啊,给这个table一个id
然后可以在客户端看到Table中生成的代码一定会有一个button和一个text,它们分别是这个table的Row(index).cell(index)的children(0),或children(1),然后根据以上思路即可。这是客户端的事情啊。和什么控件没有关系。
<script language="javascript">
function SetFocus()
{
if(event.keyCode==13)
{
document.all.tableid.rows(1).children(x).focus();
}
return false;
}
</script>
zhenwang 2003-08-28
  • 打赏
  • 举报
回复
leal(),你误解我的意思了,我的textbox1和button1是位于同一个用户自定义控件里面,textbox2和button2位于一个自定义控件里面,而这个自定义控件是没有id 的啊,它只是一个.ascx控件文件,有个文件名,在引用时在homepage.aspx页面顶部有个register,注册一下就行了。
希望大家在写代码以前最好能在自己的机器上先运行一下试试,上面的代码都不用试,因为usercontrol没有id,attributes是个属性,只能用addributes.add才行,另外,那个try段代码是放在哪个页面里,是homepage.aspx还是用户控件页.ascx。
zhenwang 2003-08-28
  • 打赏
  • 举报
回复
alf7927,我都试过了,你们只是凭空想象这样应该行,那样应该行,有谁真正的模拟过我说的那种情况吗?不信你照上面的方法试试看行不行,在说一次,我的textbox1和button1是位于同一个用户自定义控件(left.ascx)里面,textbox2和button2位于一个自定义控件(top.ascx)里面,而要显示的页面是homepage.aspx,
jiangzhu 2003-08-28
  • 打赏
  • 举报
回复
给控件设置TableIndex顺序就OK了
alf7927 2003-08-28
  • 打赏
  • 举报
回复
服了你,海阔天空说的已经很明白了,是你方法不对,或是没有用好。

'看来这个问题是没有人能够解决的了,好象.net的web控件就是不支持焦点控制啊'这是什么话啊,你好像还没有明白web控件和html控件之间的关系,控件焦点是客户端的事,和服务器端没有关系啊,所有的web控件到了客户端还不是生成html??要不IE怎么解释,在客户端控制就是使用脚本!和什么服务器端控件没有关系啊。
上边的人的方法大多可行,好好试试
zhenwang 2003-08-27
  • 打赏
  • 举报
回复
我试了,怎么不行啊?我的这几个button都分别处于不同的usercontrol里面,直接用document.form1引用是不行的。。。
对了,只记得技术问题了,忘了感谢各位高手给予的指点了,先谢谢大家了,希望高手们再努力一下,帮小弟这个问题解决,我再调整我的分值!!
SpaceTime 2003-08-27
  • 打赏
  • 举报
回复
同意leal()
textbox1.Attributes.Add("onkeydown","SetFocus(button1);"
textbox2.Attributes.Add("onkeydown","SetFocus(button2);"
zhenwang 2003-08-27
  • 打赏
  • 举报
回复
看来这个问题是没有人能够解决的了,好象.net的web控件就是不支持焦点控制啊,如果是这样的话,这算不算是web控件的一个不足之处呢?
diaopeng:你认为在一个网页里就一个搜索框和一个用户登陆框算“控件多”吗?呵呵
leal 2003-08-27
  • 打赏
  • 举报
回复
try:
在代码里:
textbox1.Attributes("onkeydown") = "javascript:SetFocus(UserControl1_button1);"
textbox2.Attributes("onkeydown") = "javascript:SetFocus(UserControl2_button2);"
....

其中SetFocus的参数是"usercontrol的id"+"_"+"在usercontrol里要获取焦点的控件id"

在aspx页面:
<script language="javascript">
function SetFocus(element)
{
if(event.keyCode==13)
{
eval("document.all."+element).focus();
}
return false;
}
</script>
leal 2003-08-25
  • 打赏
  • 举报
回复
在代码里:
textbox1.Attributes("onkeydown") = "javascript:SetFocus(button1);"
textbox2.Attributes("onkeydown") = "javascript:SetFocus(button2);"
....

在aspx页面:
<script language="javascript">
function SetFocus(element)
{
if(event.keyCode==13)
{
eval("document.Form1."+element).focus();
}
return false;
}
</script>
zhenwang 2003-08-25
  • 打赏
  • 举报
回复
怎么给id排序?id号是可以随便取的啊,难道要把id号都取成textbox1,textbox2才算是按顺序吗
diaopeng 2003-08-25
  • 打赏
  • 举报
回复
似乎没有必要,如果控件多的话,是很难控制的,而且写起来很麻烦
goody9807 2003-08-25
  • 打赏
  • 举报
回复

{with(window.event)if(srcElement.type=='text'&&keyCode==13)keyCode=9}
zhenwang 2003-08-25
  • 打赏
  • 举报
回复
.attributes是一个属性,这样设置会出现错误
loveline 2003-08-22
  • 打赏
  • 举报
回复
你的textbox的id顺序一定要按序排列,这样,焦点就自动根据id号走!
zhenwang 2003-08-22
  • 打赏
  • 举报
回复
我这样的思路正是为了迎合用户的习惯。

不知道大家有没有用纯asp.net和c#在vs.net里开发过网站,一般的,网站首页都是由很多的用户自定义控件组合而成,比如我上面讲的问题,在网站的首页上,很可能有“站内搜索”和“用户登陆”两个需要获取用户输入的控件,而为了模块的独立性,这两个部分都分别在不同的用户控件内,如一个在head.ascx,一个在left.ascx,那么现在我提的那个问题就出现了,这样生成的页面,在我们使用时,如果你在左边用户登陆里输入用户名和密码后,一般的人肯定都是直接敲回车,而不是用鼠标点选“登陆”按钮,但是,直接敲回车后,由于“站内搜索”处于页面的顶部,所以,页面会转到“站内搜索”页面,而不是我们所希望的“登陆”页面。
一种很容易想到的办法就是在客户端使用javascript控制焦点,但是这些页面上的按钮使用的全部是web控件而不是html控件,且在不同的用户自定义控件内,所以不能直接引用控件的id
。期待着其他解决方案。
stuhome 2003-08-21
  • 打赏
  • 举报
回复
zhenwang () 何苦呢?
我觉得你得思路不一定符合大家的习惯
luckysusan 2003-08-21
  • 打赏
  • 举报
回复
1.javascript:
function EnterToTab()
{with(window.event)if(srcElement.type=='text'&&keyCode==13)keyCode=9}

2.<body onkeydown="EnterToTab()" >

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧