6

我弄乱了这个简单的代码行:

$(this).next('input').focus();

我想让它选择下一个(input OR textarea),以先到者为准 - 我该怎么做?

作为替代方案,我怎样才能让它简单地关注下一个项目tabindex

编辑

因为下一个 input/tabindex 并不总是紧随其后$(this),我怎样才能轻松地遍历兄弟姐妹列表,直到找到下一个匹配项?

4

2 回答 2

7

使用:inputwhich 选择所有输入、文本区域、选择和按钮元素。

$(this).next(':input').focus();

jsFiddle

如果下一个输入不是同级输入,这似乎可行...对于此示例,单击带有 的文本框,id="test"它将focus在下一个:input元素上。

<input type="text" value="hello world2"/>
<input type="text" value="hello world3"/>
<div>
    <input type="text" id="test"/>
</div>
<div>
    <div>Hi</div>
</div>
<textarea>found me</textarea>
<input type="text" value="hello world"/>

$(document).ready(function(){
    $('#test').click(function(){
       var c = $(this).parents().nextAll(':input:first').focus();
    });
});

jsFiddle2

于 2011-10-08T21:34:04.230 回答
6
$(this).next('input,textarea').focus();

但它只有在下一个输入/文本区域是紧随其后的兄弟时才有效this

或者,您可以使用:focusablejQuery UI中的选择器。

小提琴示例- 按 Enter 键聚焦下一个输入

如果当前没有选择任何输入,您还可以通过绑定到自身并使用来定位第一个输入documente.target

于 2011-10-08T21:34:41.353 回答