2010-08-03 8 views
7

Attivato quando un elemento viene selezionato dal menu; ui.item si riferisce all'articolo selezionato. L'azione predefinita di selezione è di sostituire il valore del campo di testo con il valore dell'elemento selezionato. L'annullamento di questo evento impedisce l'aggiornamento del valore, ma non impedisce la chiusura del menu.come impedire l'evento di selezione predefinito in jquery con completamento automatico

$("#txt1").autocomplete({ 
    minLength: 1, 
    source: "abc.php", 
    select: function(event, ui) 
    { 
     event.preventDefault(); 
     //alert("Select"); 
     var label= ui.item.label; 
     var value= ui.item.value; 
     $('#txt1').val(ui.item.label); 
    } 
}); 
+0

avete fatto mai capirlo? –

risposta

-1

utilizzando questo parametro selectFirst: true

+0

non funziona. spiacente – Trip

6

So che questa è una domanda molto vecchio, ma ho appena incontrato il problema io stesso. La risposta per me è quello di mettere event.preventDefault(); alla fine del metodo di selezione in questo modo:

$("#txt1").autocomplete({ 
    minLength: 1, 
    source: "abc.php", 
    select: function(event, ui) 
    { 
     //alert("Select"); 
     var label= ui.item.label; 
     var value= ui.item.value; 
     $('#txt1').val(ui.item.label); 
     event.preventDefault(); // <---- I moved! 
    } 
}); 

Per me, se event.preventDefault(); è messo all'inizio della funzione, allora l'evento di default non si attiva e il resto della funzione non viene eseguita. Se viene spostato fino alla fine, funziona come previsto. Spero che questo aiuti qualcun altro.

+0

Non funziona per me con l'ultimo completamento automatico. :( – user706420

0

Quindi questo è un po 'un hack che ha funzionato per me: Nel mio caso selezionando una voce nel pulldown (sia con il clic del mouse o utilizzando i tasti freccia per evidenziare e premendo INVIO), stavo usando il value per costruire un URL e quindi inviare il browser ad esso ma è ancora stato copiato nella casella di ricerca. Nessuna delle risposte che ho provato ha funzionato per impedirlo. Quindi, per fermare value visualizzato nella casella di ricerca, ho fatto la value lo stesso che label nel mio JSON e ha aggiunto un campo aggiuntivo code che il mio gestore di eventi select utilizza per creare l'URL che ho bisogno:

$("#autocomplete").autocomplete({ 
    source: "http://www.example.com/search", 
    minlength: 2, 
    select: function(event, ui) { 
    // go to page on ENTER 
    window.location.href = "/page/" + ui.item.code; 
    } 
}); 
Problemi correlati