Jquery .next (ввод ИЛИ текстовая область) - PullRequest
6 голосов
/ 09 октября 2011

Я возиться с этой простой строкой кода:

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

Я бы хотел, чтобы он выбрал следующий (input OR textarea), в зависимости от того, что произойдет раньше - как я могу это сделать?

В качестве альтернативы, как я могу заставить его просто сфокусироваться на следующем элементе в tabindex?

Редактировать

Поскольку следующий ввод / tabindex не всегда сразу после$(this), как я могу легко пройти по списку братьев и сестер, пока не найду следующее совпадение?

Ответы [ 2 ]

7 голосов
/ 09 октября 2011

Используйте :input, который выбирает все элементы ввода, текстовое поле, выбор и кнопки.

$(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

6 голосов
/ 09 октября 2011
$(this).next('input,textarea').focus();

Но это будет работать только в том случае, если следующий вход / textarea - это родной брат, следующий сразу за this.

Кроме того, вы можете использовать :focusable селектор из пользовательского интерфейса jQuery.

Пример скрипта - нажмите ввод, чтобы сфокусировать следующий вход

Вы также можете нацелить первый вход , если в данный момент не выбраны никакие входы, связавшись с самим document и используя e.target.

...