Функция JQuery, основанная на пропуске строки - PullRequest
1 голос
/ 04 октября 2011

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

$('#search').keydown(function(){
            $('#header .suggestion').removeClass('visible');
            var slength = $(this).val();
            if(slength.length > 2 && slength != $(this).attr('placeholder')){
                //activate AJAX script
                $('#header .results').addClass('visible');
            }
            else {
                $('#header .results').removeClass('visible');
            }

    });

Вместо этого она не отображается, пока не отобразятся 5 символов.Почему.

Чудесный

1 Ответ

0 голосов
/ 04 октября 2011

События keydown и keypress называются ДО того, как браузер обработает ввод.Во время этих событий разработчик может добавить метод, запрещающий пользователю ввод текста.

Поэтому, когда вы слушаете функцию keydown, $(this).val() НЕ возвращает «ожидаемое» значение.

Изображение (пользователь уже сфокусировался на поле ввода):

{ } <-- Empty input field
    [X] <-- Use presses the X key
    **KEYDOWN**
    **KEYPRESS**
{X} <-- "x" appears in the text field
    **KEYUP**

Чтобы получить «ожидаемое» значение ввода, необходимо использовать событие keyupвместо keydown.

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