La saisie semi-automatique d'entrée HTML5 dynamiquement à l'aide de datalist & ajax

J'essaie de mettre à jour une entrée dans un formulaire html via datalist par la mise à jour de la datalist lui-même en utilisant jquery, les appels ajax. dans le cas de l'utilisation d'ajax, l'entrée n'affiche pas les options, mais quand je clique dans le champ de saisie de nouveau. l'essai statique de la version sans ajax ne fonctionne pas comme prévu, montrant les options tout en tapant dans le champ de saisie.

Balisage HTML

<form id="formID" class="form-horizontal">
  <div class="control-group">
    <label class="control-label" for="input">Location</label>
    <div class="controls">
      <input type="text" list="LIST_CITIES" id="inputCity" 
      placeholder="Enter your location..">
    </div>
  </div>
  <!-- submit -->
  <button type="submit" class="btn">Submit</button>
</form>

<datalist id="LIST_CITIES"></datalist>

sans ajax (fonctionne):

$('.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<len; i++) {
    var opt = $("<option></option>").attr("value", testObj.results[i]['city']);
    tempObj[testObj.results[i]['city']] = testObj.results[i]['id'];

    dataList.append(opt);
  }
}

  });

avec ajax (ne fonctionne pas lors de la saisie):

$('.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<len; i++) {
        var opt = $("<option></option>").attr("value", data.results[i]['city']);
        tempObj[data.results[i]['city']] = data.results[i]['id'];

        dataList.append(opt);
      }
    }
  }
});
Vous GET_cities url c'est correct? Votre demande d'aller sur le serveur?
Oui, je reçois les données de formaté similaire à la testobject. La seule différence ist que le deuxième (ajax) solution ne permet pas de montrer les options alors que je suis en tapant dans le champ de saisie
Une solution de contournement a été posté ici : stackoverflow.com/questions/26610752/...

OriginalL'auteur Dominik H | 2013-04-04