Ich versuche, ein Eingabefeld in einem HTML-Formular über eine Datalist zu aktualisieren, indem ich die Datalist selbst mit Hilfe von jQuery-Ajax-Aufrufen aktualisiere. Im Falle der Verwendung von Ajax werden die Optionen nicht im Eingabefeld angezeigt, aber wenn ich erneut in das Eingabefeld klicke. Die statische Testversion ohne Ajax funktioniert wie erwartet und zeigt Optionen an, während man in das Eingabefeld tippt.
HTML-Markup
Standort
Absenden
ohne Ajax (funktioniert):
$('.controls').on("input click", "#inputCity", function(e) {
var val = $(this).val();
dataList.empty();
if(val === "" || val.length < 3) return;
if(testObj.results.length) {
for(var i=0, len=testObj.results.length; i").attr("value", testObj.results[i]['city']);
tempObj[testObj.results[i]['city']] = testObj.results[i]['id'];
dataList.append(opt);
}
}
});
mit Ajax (funktioniert nicht beim Tippen):
$('.controls').on("input click", "#inputCity", function(e) {
var val = $(this).val();
dataList.empty();
if(val === "" || val.length < 3) return;
$.ajax({
type: "GET",
url: GET_cities,
data: {startswith: val, maxRows: 5},
success:function(data){
if(data.results.length) {
for(var i=0, len=data.results.length; i").attr("value", data.results[i]['city']);
tempObj[data.results[i]['city']] = data.results[i]['id'];
dataList.append(opt);
}
}
}
});