Funktion bei erneutem Aufruf stoppen
kvogelsa
- javascript
Guten Tag,
folgendes Problem habe ich:
Ich habe ein Textfeld. Dort trage ich einen string ein, und auf jedem onkeyup wird ein ajax-script gestartet, welches mir aus einer phpDatei mit mysql Zugriff die Suchtreffer unter dem Textfeld anzeigt.
Nun wird das script aber durch die Eingabe von 4 Buchstaben viermal ausgeführt. Soll aber nur einmal.
Ich wollte es so lösen, dass ich den Ajax-Aufruf mit setTimeout aufrufe und bei jedem onkeydown eine globale variable erhöhe. Wenn dann die übergebene variable mit der (bei erneutem Tastendruck erhöhten) Variablen nicht übereinstimmt, soll er return machen.
Problem ist, dass bei erneutem Aufruf der Funktion auch die lokale Variable geändert wird.
Jetzt die Frage: wie kann ich bei erneutem Funktionsaufruf den vorangegangenen Funktionsaufruf stoppen außer mit flags?
hallo,
Nun wird das script aber durch die Eingabe von 4 Buchstaben viermal ausgeführt. Soll aber nur einmal.
wie wäre es, die eingetragenen Zeichen zu zählen und erst ab z.B. 4 Zeichen die Funktion aufrufen zu lassen?
cu
hallo,
Nun wird das script aber durch die Eingabe von 4 Buchstaben viermal ausgeführt. Soll aber nur einmal.
wie wäre es, die eingetragenen Zeichen zu zählen und erst ab z.B. 4 Zeichen die Funktion aufrufen zu lassen?
cu
Hi,
Danke für die schnelle Antwort.
manchmal ist der suchstring nur zwei zeichen lang. außerdem tritt das problem dann bei längeren strings auch auf.
manchmal ist der suchstring nur zwei zeichen lang. außerdem tritt das problem dann bei längeren strings auch auf.
Andere Idee: Lass die Funktion erst anspringen, wenn die letzte Eingabe n Sekunden her ist.
Andere Idee: Lass die Funktion erst anspringen, wenn die letzte Eingabe n Sekunden her ist.
super idee! Wie mache ich das?
Hi,
Andere Idee: Lass die Funktion erst anspringen, wenn die letzte Eingabe n Sekunden her ist.
super idee! Wie mache ich das?
Wenn Eingabe, dann Aufruf der Funktion für in X Sekunden einplanen lassen.
Wenn Eingabe, dann ggf. schon vorher bestehende Einplanung wieder rückgängig machen.
(Sinnvollerweise eher in umgekehrter Reihenfolge.)
MfG ChrisB
Hi,
Andere Idee: Lass die Funktion erst anspringen, wenn die letzte Eingabe n Sekunden her ist.
super idee! Wie mache ich das?
Wenn Eingabe, dann Aufruf der Funktion für in X Sekunden einplanen lassen.
Das mache ich mit setTimeout(), richtig?
Wenn Eingabe, dann ggf. schon vorher bestehende Einplanung wieder rückgängig machen.
Genau das würde ich gern machen. Sagt mir doch bitte, wie. Danke für eure Mühe
Hallo kvogelsa,
wenn du dir den Rückgabewert von setTimeout merkst, kannst den Timeoutaufruf mit clearTimeout stornieren.
Siehe hierzu http://de.selfhtml.org/javascript/objekte/window.htm#clear_timeout
Gruß, Jürgen
Hallo!
Vielen Dank, das habe ich gesucht wie ein doofer. Manchmal bekommt man es mit google einfach nicht hin.
Funktioniert wie bolle:
echo "
<input type=\"text\" value=\"\" name=\"s\" id=\"s\" size=\"75\" autocomplete=\"off\"
onkeydown=\"window.clearTimeout(active_find_file);getElementById('no_s').id='s';\"
onKeyUp=\"
active_find_file = setTimeout('find_file( \'wait\', \'search-results\', document.getElementById(\'s\').value);', 200);
\" >";