在我的页面(ASP.NET 3.5)上,只要下一个输入控件没有启用或隐藏,所有输入控件都设置了Tab键顺序,它会转到地址栏,然后转到下一个可用控件。要修复此行为,即使其位于下一个可用控件而不是地址栏,我正在尝试使用jQuery:
$(':text,textarea,select').blur(function()
{
$(this).next(':text, textarea, select').filter(':enabled:visible').focus();
}); 但在某些情况下,它仍然会去地址栏。我需要在这里更正什么?
发布于 2010-03-19 20:17:12
首先让我说,我不会这么做,而是使用控件上的tabindex property来获得您想要的Tab键顺序,地址栏只在最末尾,因为这是用户所期望的。
也就是说,有一种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 )。
对于this,当到达末尾时,制表符需要换行到第一个元素,并使用
.index()和i == con.length - 1 ? 0 : i + 1
最后,元素的focus事件将在使用像above这样的setTimeout(func, 0)后立即触发 this above(默认情况下)
https://stackoverflow.com/questions/2474633
复制相似问题