我正在使用这个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();
:)
答案 0 :(得分:0)
我希望这不是一个互联网页面。干扰浏览器默认行为并不聪明。
如果它们在最后一次输入时,您是否尝试过返回true而不是false?
答案 1 :(得分:0)
已解决:如果执行了适当的条件,只需触发提交按钮
.....
if (e.keyCode == 13)
{
if (idx == inputs.length - 1)
{
document.getElementById('formId:buttonId').click();
}
}
.....