Автозаполнение при вводе (но не при автоматическом выборе) - PullRequest
4 голосов
/ 07 апреля 2011

У меня есть простое поле ввода

и при вводе я хочу отправить его (форма, в которой он находится).Я использую jQuery, но не какое-либо расширение автозаполнения, поэтому это просто браузер по умолчанию:

$('#searchfield')
.keypress(function(event) {
        var keycode;
        if (window.event)
            keycode = window.event.keyCode;
        else if (event)
            keycode = event.which;
        else
            return true;

        if (keycode == 13)
            $('#searchForm').submit();
});

Проблема с этим решением: Когда кто-то (в FF3) начинает печатать (скажем, "stackov")"), затем идет стрелка вниз для предлагаемого выбора и нажимает клавишу ввода, форма отправляется, хотя и ищет" stackov ", а не выбранный" stackoverflow ".

В качестве альтернативы я пытался

$('#searchfield')
.change( function() {
   $('#singleSearch').trigger('click');
})

Это дало мне правильный выбор «stackoverflow», но теперь любой выход из поля (как в blur (), после нажатия некоторых писем, например) невольно отправленоэто выключено.

Любой (идеально проверенный;) совет по этому поводу?

1 Ответ

1 голос
/ 08 апреля 2011

Хм, все, что я могу сказать, это то, что небольшая задержка для «дайджеста» автозаполнения перед отправкой решает проблему:

if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {
    setTimeout( function() {
        $('#searchForm').submit(); 
    } , 30 );
};
...