我使用这个工作的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;
}
});
答案 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;
}
});