Триггерная кнопка домой после фокуса ввода - PullRequest
2 голосов
/ 14 января 2012

Я пытаюсь с помощью этого кода перевести курсор ввода в начало текста ввода, но безуспешно. В чем проблема?

HTML
<input value="text"/>
JavaScript (JQuery)
$('input').focus(function(){
  $(this).delay(100).trigger(jQuery.Event("keydown",{keyCode: 36, which: 36}));
});

Live at JSBin

Ответы [ 2 ]

3 голосов
/ 14 января 2012

Это похоже на случай переосмысления проблемы ИЛИ вы не правильно ее описали. Поведение фокуса по умолчанию - поместить курсор в начало текста. Просто сделай это:

$(function() {
    $('input').delay(100).trigger('focus');
});

Не уверен, зачем тебе задержка. Используя событие готовности jQuery, как показано, вы можете устранить задержку.

1 голос
/ 14 января 2012

Итак, проблема не в том, чтобы нажать домой, а в том, чтобы переместить курсор в начало текстового поля, которое я предполагаю.

Проверка этого ответа: переместить курсор в начало поля ввода?
Обычно подход правильный, но, похоже, он не работает напрямую

Я изменил его, чтобы он соответствовал вашему jQuery в фокусе:

$('input').focus(function(){
    var input = this;
    // for some reason, putting directly doesn't work
    setTimeout(function() { 
        if (input.createTextRange) {
                var part = input.createTextRange();
                part.moveat("character", 0);
                part.moveEnd("character", 0);
                part.select();
            }
        else if (input.setSelectionRange){
                input.setSelectionRange(0,0);
        }
    }, 0);
});

Живой пример:
http://jsfiddle.net/sF334/

Если вы хотите активировать фокус, то вы можете сделать это следующим образом:

$('input').trigger('focus');
// use some unique selector instead in real example, like ID

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...