2012-04-14 2 views
3

Я пытаюсь создать простую область поиска. Как я могу вызвать функцию сразу после ввода одной буквы в поле ввода? Я использовал .keyup, но это кажется бесполезным, потому что, когда набирается диакритический символ, функция запускается три раза.Запуск функции с jQuery после ввода одной буквы в поле ввода

<input id="text" type="text" /> 
<div></div> 
<script> 
    $('#text').keyup(function(){ 
     $('div').append('TEST'+$(this).val()); 
    }); 
</script> 

Приведенный выше код работает отлично, если не вводить какие-либо диакритических символов: A, S, L, Z, Z, C и т.д.

я не могу использовать .keypress или .keydown, так как они вызывают функция до ввода символа.

EDITED СПУСТЯ:

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

+1

просто предотвратить делать что-либо на Shift-Ctrl-Alt и должны работать – ajax333221

ответ

5

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

http://jsfiddle.net/82sTJ/1/

+0

Ответы ваших и пользователей1078510 решают мою проблему. Но ваше решение работает без редактирования, поэтому я решил отметить ваш ответ как «принятый». Спасибо за вашу помощь! :) – lukeshek

4
var i = 0;  

$('#text').keyup(function(event) { 
    i++; 
    if(i == 1) 
    { 
     $('div').append('TEST'+$(this).val()); 
    } 
}); 

Это мне надо работать, можно также обнаружить конкретный ключ вводимой

+0

Вы были очень близки! Я добавил немного больше кода, и он отлично работает! Ваш код просто необходим: .keydown (function (event) {i = 0;}); – lukeshek

+0

Рад, что я мог бы помочь! –