输入到TAB重定向 - <h:selectonemenu> </h:selectonemenu>的问题

时间:2011-05-06 10:40:04

标签: jquery jsf

我使用这个工作的jquery方法将ENTER键重定向到TAB键:

   $('*').live("keydown", function(e) {  
     if (e.keyCode == 13 || e.keyCode == 9) {
       var inputs = $(this).parents("form").eq(0).find(".input");
       var idx = inputs.index(this);
       inputs[idx + 1].select();
       return false;
     }
   });

问题是,我能够(按ENTER)只在h:inputText styleClass =“input”组件之间跳转。 如果我想跳转到h:selectOneMenu styleClass =“input”在h:inputText旁边,它会提交表单。

如何更改代码以跳过输入和selectonemenu组件?

你能帮帮我吗?

更新 - 工作解决方案:

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

  // ENTER IS PRESSED
  if (e.keyCode == 13) 
  { // load all enabled, visible and "input" class components from a "form"
    inputs[idx + 1].focus();    // for enter key - allows step to selectOneMenu
    inputs[idx + 1].select();   // and text selection in a field
    //e.stopPropagation();
    return false;
  }
  // TAB IS PRESSED
  if (e.keyCode == 9) 
  { 
  inputs[idx + 1].select();
  return false;
  }
});

1 个答案:

答案 0 :(得分:2)

试试这个,而不是返回false,执行:

$('*').live("keydown", function(e) {  
     if (e.keyCode == 13 || e.keyCode == 9) {
       var inputs = $(this).parents("form").eq(0).find(".input");
       var idx = inputs.index(this);
       inputs[idx + 1].select();
       e.stopPropagation();
       return false;
     }
   });

$('*').live("keyup", function(e) {  
     if (e.keyCode == 13 || e.keyCode == 9) {
       e.stopPropagation();
       return false;
     }
   });

您也可以在e.stopPropagation()之后返回false。

<强> SOLUTION:

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

  // ENTER IS PRESSED
  if (e.keyCode == 13) 
  { // load all enabled, visible and "input" class components from a "form"
    inputs[idx + 1].focus();    // for enter key - allows step to selectOneMenu
    inputs[idx + 1].select();   // and text selection in a field
    //e.stopPropagation();
    return false;
  }
  // TAB IS PRESSED
  if (e.keyCode == 9) 
  { 
  inputs[idx + 1].select();
  return false;
  }
});