如何用回车键代替TAB键的作用? ( 积分: 30 )

  • 主题发起人 主题发起人 formater
  • 开始时间 开始时间
F

formater

Unregistered / Unconfirmed
GUEST, unregistred user!
要求在web页面里实现,不是delphi的form。并且这个WEB页面是在一个iframe里面。
 
要求在web页面里实现,不是delphi的form。并且这个WEB页面是在一个iframe里面。
 
表单填写时用回车代替TAB的实现方式
关键之处在于tabindex,其设计思想是:为每个表单元素设置一个tabindex,其值分别为前一个表单元素的tabindex的值加一,函数的功能就是当用户按下回车键时先将当前tabindex的值加一
首先,我们需要在表单体中设定一个onkeyup事件:
<form name=&quot;xxx&quot;
action=&quot;YYY.asp&quot;
method=&quot;post&quot;
onkeyup=&quot;return changefocus_onkeyup()&quot;
language=&quot;javascript&quot;>
其次,在每一个表单元素中设定一个tabindex值,假定该表单有三个元素,则我们分别设定tabindex值如下:
<input type=text name=&quot;txtName&quot;
size=&quot;16&quot;
tabindex=1>
<input type=checkbox name=&quot;chkSign&quot;
tabindex=2>
<textarea name=&quot;tarContent&quot;
tabindex=3>
最后,写出changefocus函数如下:
function newinfo_form_onkeyup()
{
key=window.event.keyCode;
if(key==0xD)//判断是否按下回车键
{
CurTabIndex=event.srcElement.tabIndex+1//将当前tabindex的值加1
for (n=0;n<newinfo_form.elements.length;n++)
{
if (newinfo_form.elements[n].tabIndex==CurTabIndex) //找到下一个表单元素
{
newinfo_form.elements[n].focus();
//移动焦点
return true;
}
}
}
}
 
如果整个程序都要这样用的话,如下比较方便:
建一个函数:
proceduredo
EnterAsTab(Var Msg: TMsg;
Var Handled: Boolean);
begin
If Msg.Message = WM_KeyDown then
If Msg.wParam = VK_Return then
Keybd_event(VK_TAB,0, 0, 0);
end;
在主窗体的FormShow中调用:
Application.OnMessage:=do
EnterAsTab;
 
没看到是在WEB中用,不好意思....
 
根据你的代码修改:根本不管用
<script language=&quot;javascript&quot;>
function changefocus_onkeyup()
{
key=window.event.keyCode;
if(key==0xD)//判断是否按下回车键
{
CurTabIndex=event.srcElement.tabIndex+1//将当前tabindex的值加1
for (n=0;n<newinfo_form.elements.length;n++)
{
if (newinfo_form.elements[n].tabIndex==CurTabIndex) //找到下一个表单元素
{
newinfo_form.elements[n].focus();
//移动焦点
return true;
}
}
}
}
</script>
<form name=&quot;xxx&quot;
action=&quot;YYY.asp&quot;
method=&quot;post&quot;
onkeyup=&quot;return changefocus_onkeyup()&quot;

language=&quot;javascript&quot;>
<input type=text name=&quot;txtName&quot;
size=&quot;16&quot;
tabindex=1>
<input type=checkbox name=&quot;chkSign&quot;
tabindex=2>
<textarea name=&quot;tarContent&quot;
tabindex=3></textarea>
 
其实在网上搜索到最多的代码是:onKeyDown=&quot;
if(event.keyCode==13)event.keyCode=9;&quot;
但实际上也不管用:(
 
楼主不能自己改一下吗?
<script language=&quot;javascript&quot;>
function changefocus_onkeyup()
{ //alert(&quot;ffdfd&quot;);
key=window.event.keyCode;
if(key==0xD)//判断是否按下回车键
{
CurTabIndex=event.srcElement.tabIndex+1//将当前tabindex的值加1
for (n=0;n<newinfo_form.elements.length;n++)
{
if (newinfo_form.elements[n].tabIndex==CurTabIndex) //找到下一个表单元素
{
newinfo_form.elements[n].focus();
//移动焦点
return true;
}
}
}
}
</script>
<form name=&quot;newinfo_form&quot;
action=&quot;YYY.asp&quot;
method=&quot;post&quot;
onkeyup=&quot;return changefocus_onkeyup()&quot;

language=&quot;javascript&quot;>
<input type=text name=&quot;txtName1&quot;
size=&quot;16&quot;
tabindex=1>
<input type=text name=&quot;txtName2&quot;
size=&quot;16&quot;
tabindex=2>
<input type=text name=&quot;txtName3&quot;
size=&quot;16&quot;
tabindex=3>
<input type=text name=&quot;txtName4&quot;
size=&quot;16&quot;
tabindex=4>
<input type=checkbox name=&quot;chkSign&quot;
tabindex=5>
 
楼主不细心阿,上面代码的最近关键部分在什么地方?就是最后那个tabindex,用我给你的最新代码看效果
 
晕,没仔细看,可以了。顺便问:为什么onKeyDown=&quot;
if(event.keyCode==13)event.keyCode=9;&quot;这个语句不行呢?
 
我也不明白,网页不怎么懂,能解决问题就ok,给分吧[:)]
 
后退
顶部