2012-04-14 9 views
3

Ich versuche, ein einfaches Suchfeld zu erstellen. Wie kann ich eine Funktion auslösen, nachdem ein einzelner Buchstabe in ein Eingabefeld eingegeben wurde? Ich habe .keyup verwendet, aber das scheint nutzlos zu sein, denn wenn ein diakritisches Zeichen eingegeben wird, wird die Funktion dreimal ausgelöst.Eine Funktion mit jQuery auslösen, nachdem ein einzelner Buchstabe in ein Eingabefeld eingegeben wurde

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

Der obige Code funktioniert gut, wenn Sie alle diakritischen Zeichen eingeben: A, S, L, Z, Z, C, usw.

ich nicht .keypress oder .keydown verwenden können, da sie auslösen eine Funktion, bevor ein Zeichen eingegeben wird.

SPäTER EDITED:

Ich weiß, dass mein Beispiel nicht klar sein könnte, um das Problem zu verstehen, aber ... In meinem realen Code ein Brief jedes Mal eingegeben wird, wird eine SQLite Abfrage ausgeführt. Wenn ein Typ ein diakritisches Zeichen oder ein Großbuchstabe ist, wird die Abfrage drei oder zwei Mal ausgeführt, was das gesamte Skript verlangsamt. Es wird keinen großen Unterschied machen, wenn Sie das Skript in einem Computer-Webbrowser ausführen, aber in mobilen Browsern gibt es erhebliche Verzögerungen.

+1

nur verhindern und sollte – ajax333221

Antwort

5

hielt ich den Wert der zum letzten Mal im Vergleich prüfter String eingegeben wird es geändert wurde. Die Tastatur wird also erst ausgeführt, wenn die Zeichenfolge geändert wird. etwas zu tun, auf Shift-Strg-Alt

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

+0

Die Antworten von dir und user1078510 lösen mein Problem. Aber Ihre Lösung funktioniert ohne Bearbeitung, also habe ich beschlossen, Ihre Antwort als "akzeptiert" zu markieren. Danke für Ihre Hilfe! :) – lukeshek

4
var i = 0;  

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

sollten Dies ist für mich arbeiten, können Sie auch die spezifischen Schlüssel erkennen

+0

arbeiten Sie waren ganz in der Nähe! Ich habe ein bisschen mehr Code hinzugefügt und es funktioniert perfekt! Ihr Code benötigt nur: .keydown (function (event) {i = 0;}); – lukeshek

+0

Ich bin froh, dass ich helfen konnte! –

Verwandte Themen