2015-01-27 13 views
5

Buongiorno,jQuery completamento automatico, evento di modifica non funziona come previsto

ho il seguente codice:

$("#close-request-field-clinic").autocomplete({ 
       source: arrayClinic, 
       delay: 0, 
       minLength: 0, 
       isDivider: function(item) { 
        return false; 
       }, 
       focus: function (event, ui) { 
        $('#close-request-field-clinic').val(ui.item.label); 
        return false; 
       }, 
       select: function(event, ui) { 
        $('#close-request-field-clinic').val(ui.item.label); 
        if(ui.item.value == -1) { 
         resetField('#close-request-field-clinic', false); 
        } else { 
         successField('#close-request-field-clinic'); 
         setKey(finalValues, 'clinic', ui.item.value); 
         if(msieversion()) { 
          $(this).blur(); 
         } 
        } 
        checkValidation(fieldCheck,'#close-request-personal-information-next'); 
        return false; 
       }, 
       change: function(event, ui) { 
        alert('change'); 
        if(!ui.item) { 
         resetField('#close-request-field-clinic', false); 
         removeKey(finalValues, 'clinic'); 
        } 
        checkValidation(fieldCheck,'#close-request-personal-information-next'); 
        return false; 
       } 
      }).focus(function(){$(this).autocomplete("search", "")}); 

La maggior parte di questo funziona perfettamente, tuttavia, sembra che quando il campo viene modificato l'evento 'change' non viene sempre attivato.

Quando si seleziona un elemento della lista, funziona benissimo, se si eliminano i valori nella casella con il backspace (cancellazione) chiave, quindi fare clic fuori dalla casella di testo, l'evento di modifica è solo volte chiamato . C'è qualcosa che mi manca? Sembra solo non essere chiamato quando i valori vengono cancellati manualmente.

saluti, Josh

+0

possibile duplicato del [jQuery completamento automatico trigger evento di modifica] (http://stackoverflow.com/questions/6431459/jquery-autocomplete-trigger-change-event) – allicarn

risposta

6

Questo è soluzione pulita alternativa

$("#close-request-field-clinic").on("autocompletechange", function(event,ui) { 
     alert($(this).val()); 
    }); 

Questa risposta copiato da here

+0

C'è una spiegazione del perché su ('autocompletechange') funziona, mentre l'evento change del widget di completamento automatico non funziona come expecte d? – osullic

+0

Non sono sicuro al 100% ma ho scoperto che non funzionava per me a causa della versione precedente di jQuery –