ENTER to TAB重定向问题:在周期结束时提交表单

时间:2011-05-25 06:14:59

标签: javascript jquery

我正在使用这个jQuery函数来跳转表单的“输入”样式组件:

$('*').live("keydown", function(e) 
{    
  var inputs = $(this).parents("form").eq(0).find(".input:visible:enabled"); 
  var idx = inputs.index(this); 

  // ENTER IS PRESSED
  if (e.keyCode == 13) 
  { 
    if (idx == inputs.length - 1) 
    {
      inputs[idx + 1].select();
    } 
    else 
    {                           
      inputs[idx + 1].focus(); 
      inputs[idx + 1].select();
    }
    return false;
  }
  // TAB IS PRESSED
  if (e.keyCode == 9) 
  { 
    inputs[idx + 1].select();
    return false;
  }
});

和表单上的这些组件(简化代码):

<h:inputText id="persId" tabindex="1" styleClass="input">
<h:selectOneMenu id="type" tabindex="1" styleClass="input">
<h:selectOneMenu id="no" tabindex="1" styleClass="input">
<h:commandButton type="submit" tabindex="2" id="btnSubmit" styleClass="btninput"/>

我需要的是跳过3个输入,然后提交表单(使用回车)。当我用inputText替换selectOneMenu时,它工作正常,但是对于selectOneMenu,它没有。

TAB正常旋转所有三个组件。

我做错了什么?

更新:也许只需点击正常if (idx == inputs.length - 1),但我不知道怎么做??

已解决:啊哈,很简单,只需添加document.getElementById('food:btnSubmit').click();:)

2 个答案:

答案 0 :(得分:0)

我希望这不是一个互联网页面。干扰浏览器默认行为并不聪明。

如果它们在最后一次输入时,您是否尝试过返回true而不是false?

答案 1 :(得分:0)

已解决:如果执行了适当的条件,只需触发提交按钮

 .....
 if (e.keyCode == 13) 
 { 
   if (idx == inputs.length - 1) 
   {
     document.getElementById('formId:buttonId').click();
   }
 }
 .....