Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » Auszeichnungssprachen » Autocomplete mit Ajax erst ab zwei oder mehr eingeg... Antworten
Autocomplete mit Ajax erst ab zwei oder mehr eingegebenen Zeichen

diwie
Otto-Normal-Poster


Beiträge: 51


Ich habe ein Formular mit zwei Input Feldern zur Abfrage aus einer Datenbank. Dafür nutze ich den Ajax.Autocompleter um anhand der Eingaben die eine vorselektierte Liste zu erstellen. Klappt soweit auch super. ABER.
Da ca. 20.000 Datensätze in der DB enthalten sind, dauert Abfrage im Hintergrund bei nur einem eingebenen Zeichen entsprechend lange. Ab zwei schnell hintereinander eingegebenen Zeichen ist die Performance schon ordentlich.
Daher möchte ich den Ajax.Autocompleter erst nach 2 oder 3 eingegebenen Zeichen im Input Feld starten.

Wie löse ich das am besten mit JS?

Mit der Abfrage this.value.length über ein onKeyup Event kommt er bei der Benutzung der Backspace Taste leider durcheinander.

Diese Nachricht wurde geändert von: diwie
  Profil   Editieren   Zitieren

chip
Quasselstrippe


Beiträge: 391


Was genau soll "kommt er [...] durcheinander" heißen? Wenn onkeyup nicht funktioniert probier' doch einfach mal onkeypress.

---

Diese Nachricht wurde geändert von: chip
  Profil   Website   Editieren   Zitieren

diwie
Otto-Normal-Poster


Beiträge: 51


Ich gebe ein zeichen ein - noch noch kein autocomplete.
ich gebe ein zweites ein - autocomplete startet.
wenn jetzt der user ein backspace eingibt, soll autocomplete nicht wieder mit einem zeichen starten (lange abfrage), daher setze ich bei betätigung von backspace den wert im feld auf 0.
wenn ich jetzt wieder ein (das erste sichtbare im feld) zeichen eingebe, startet autocomplete wieder sofort: ;(

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17:
	

	function zaehlen (wert,taste) {
		if (!taste)
  			taste = window.event;
  		if (taste.keyCode=='8') {
  			document.rl100.bezeichner.value='';
		}

		laenge = wert.length;
		if (laenge >= 1) {
			new Ajax.Autocompleter('bezeichner', 'auto1', 'get_db_data.php', {indicator: 'indicator1'});
		}
		
	}



gibt es im ajax.autocompleter kein eingebautes delay oder eine prüfung der anzahl der eingebenen zeichen?

Diese Nachricht wurde geändert von: diwie
  Profil   Editieren   Zitieren

diwie
Otto-Normal-Poster


Beiträge: 51


gibs nicht. nach stundenlangen suchen habe ich in einem quelltext die lösung gefunden. all das ist doch bereits integriert!! ;)

1: 
2: 
3:
new Ajax.Autocompleter ('bezeichner', 'auto', 'get_db_data.php', {minChars: 2});


in den manuals hatte ich leider keine angaben zu gefunden.

Diese Nachricht wurde geändert von: diwie
  Profil   Editieren   Zitieren
 

Antworten
Nach oben