Установить фокус на поле ввода при начале ввода - PullRequest
4 голосов
/ 30 января 2011

Я ищу способ начать набирать текст на веб-сайте, не выбирая ничего, а затем выделить конкретное поле ввода.

Google также использует эту функцию. В их результатах поиска вы можете щелкнуть где угодно (расфокусировать поле поиска), и когда вы начнете печатать, он автоматически снова сфокусируется на поле поиска.

Я думал о jQuery общей функции onkeyup, чтобы сосредоточиться на поле, какие-либо предложения?

Очень ценится.

Ответы [ 4 ]

6 голосов
/ 30 января 2011

Вы должны связать событие keydown, но сразу же отсоедините его, чтобы в других текстовых вводах можно было продолжить набор текста без возврата фокуса к вводу по умолчанию.

$(document).bind('keydown',function(e){
    $('#defaultInput').focus();
    $(document).unbind('keydown');
});

См. Примерздесь.

1 голос
/ 17 августа 2012

В этом решении нет проблемы, которую имеет решение @ mVChr: ​​Т.е. вы можете щелкнуть мышью на другом вводе и начать печатать без потери фокуса из-за привязки keydown.

Также это решение не удаляет все keydown -привязки элемента, но вместо этого использует именованный обработчик.

var default_input_handler = function() {
    $('.default-input').focus();
    $(document).off('keydown', default_input_handler);
}

$(document).on('keydown', default_input_handler);

$('input, textarea, select').on('focus', function() {
    $(document).off('keydown', default_input_handler);
});
0 голосов
/ 30 января 2011

Ответ так же прост:

$(document).keydown(function() { $('#element').focus(); });

Клавиша

предпочтительнее в конце концов, потому что она срабатывает только после нажатия первой клавиши - и соответственно не захватывает первую клавишу, введенную в моем поле поиска.

0 голосов
/ 30 января 2011

Если вы планируете это сделать, я бы сказал, используйте onKeyUp вместо onKeyDown.Это намного раньше в действии, которое поможет ослабить поток взаимодействия.

...