Jetzt mal unabhängig von dem Problem nur eines Vorschlags, zu dem mir auf Anhieb nichts einfällt,
Mir fällt da was ein.
Ich tippe einen Buchstaben und was macht HTML? Es wird in einer Zeit X die vorhandenen Vorschläge einblenden.
Nach dem getippten Zeichen (oninput) wird Ajax aktiv, der Server antwortet, die neue Liste wird noch mit Javascript aufbereitet in der Zeit Y.
Vermutlich gewinnt HTML das Rennen vor Javascript, leider zuungusten des Lesers.
In meiner selbstgestrickten Lösung ist das auch ein Problem. Ich blende die Vorschlagsliste ein und wenn ich auf einen Wert zwecks Übernahme klicke, verliert das Input-Feld den Fokus (onblur), und die Vorschläge werden mit mit display:none ausgeblendet. Nicht immer scheint das System zu wissen, wohin geklickt wurde, kurz bevor der Link verschwand.
In meiner Bastelstube sieht das dann so aus:
<p class="co mb00">Ortsname</p>
<div style="position:relative;">
<input
id = "such_ort"
type = 'text'
name = 'such_ort'
size = "25"
maxlength = "25"
value = "[such_ort]"
placeholder = "Ortsname"
oninput = "getOrte( '[HOST]', this )"
onblur = "schliesseGetOrte()"
/>
<div id='such_ort_vorschlaege' class="vorschlaege"></div>
</div>
/* das Loeschen der Vorschlaege muss verzögert werden, wiel der "blur" schneller ist. */
function go_loescheDiv() {
ajaxGetOrteVar.obj_vorschlaege.style.display = "none";
}
function schliesseGetOrte() {
window.setTimeout("go_loescheDiv()",500);
}
Wie kann ich die Anzeige der datalist verzögern? Oder wie macht Google das, die antworten doch auch mit nachgeladenen Vorschlägen bei der Suche.
Gruß, Linuchs
EDIT: Mir fällt gerade eine Verbesserung meiner bisherigen Lösung ein. Nicht nach 0,5 s die Vorschläge wegzaubern (0,2 war zu kurz), sondern nach erfolgter Daten-Übernahme.
EDIT 2: Nee, geht so nicht. Ich muss die Vorschläge auch ausblenden, wenn nicht auf einen Vorschlag geklickt wurde.