我有tabindex的tabindex =" 1"通过tabindex =" 20",这些是动态生成的。 somethimes tabindex =" 16"从" 15"点击时,不会产生那个时间。它会转到" 1",但我希望它能够进入" 17",我怎样才能实现这一目标?
<script>
$(document).on("keypress", ".TabOnEnter" , function(e)
{
//Only do something when the user presses enter
if( e.keyCode == 13 )
{
var nextElement = $('[tabindex="' + (this.tabIndex+1) + '"]');
console.log( this , nextElement );
if(nextElement.length )
nextElement.focus()
else
$('[tabindex="1"]').focus();
}
});
</script>
答案 0 :(得分:1)
<script>
$(document).on("keypress", ".TabOnEnter" , function(e)
{
//Only do something when the user presses enter
if( e.keyCode == 13 )
{
var nextIndex = this.tabIndex + 1;
var nextElement = $('[tabindex="' + nextIndex + '"]');
console.log( this , nextElement );
while(!nextElement.length){
nextIndex++;
if(nextIndex>20){
break;
}else{
nextElement = $('[tabindex="' + nextIndex + '"]');
}
}
nextElement.focus();
}
});
</script>
答案 1 :(得分:0)
以下内容适用于任意数量的输入,以任何tabindex顺序,以及任何缺少的tabindex
es(包括tabindex = 1)。
如果你在最后一个tabindex上,那么下一个tabindex的输入将被关注。
$(document).on('keypress', '.TabOnEnter' , function(e) {
if(e.which===13) {
var tabs= $('[tabindex]'),
firstElement= tabs[0],
nextElement,
self= this;
tabs.each(function() {
if(this.tabIndex > self.tabIndex &&
(!nextElement || this.tabIndex < nextElement.tabIndex)
) {
nextElement= this;
}
if(this.tabIndex < firstElement.tabIndex) {
firstElement= this;
}
});
(nextElement || firstElement).focus();
}
});
请注意,建议使用 event.which
而不是event.keyCode
。
答案 2 :(得分:-1)
&#34;避免使用大于1的tabindex值。这样做会使依赖辅助技术的人难以浏览和操作页面内容。&#34;
只需将tabindex设置为0即可获得需要键盘焦点的元素,并以对您的内容具有逻辑意义的方式对HTML元素进行排序。