在我的页面(ASP.NET 3.5)中,所有输入控件都设置了Tab键顺序,只要下一个输入控件未启用或隐藏,它就会转到地址栏然后转到下一个可用控件。要解决这个问题,即让它到达下一个可用的控件而没有去地址栏我试图使用jQuery:
$(':text,textarea,select').blur(function()
{
$(this).next(':text, textarea, select').filter(':enabled:visible').focus();
});
但在某些情况下,它仍会进入地址栏。我需要在这里纠正什么?
答案 0 :(得分:1)
让我首先说,我不会这样做,而是使用控件上的tabindex property来获取所需的标签顺序,地址栏只是在最后,因为那是一个什么样的用户期望。
话虽如此,有一种jQuery方法强制你想要的东西,你可以做这样的事情:
$('form :input:enabled:visible').blur(function() {
var con = $(this).closest('form').find(':input:enabled:visible');
var i = con.index(this);
setTimeout(function() { con.eq(i == con.length - 1 ? 0 : i + 1).focus(); }, 0);
});
这改变了一些事情:
.next()
仅查找下一个元素
<form>
并获取下一个匹配项(对于所有输入,将form
更改为body
。 .index()
和i == con.length - 1 ? 0 : i + 1
进行此focus
事件会在 setTimeout(func, 0)