2011-08-30 16 views
11

Ho un modulo che utilizza il plug-in UI completamento automatico jquery, http://jqueryui.com/demos/autocomplete/, che funziona tutto dolce tranne quando si preme il tasto Invio per selezionare un elemento nel completamento automatico lista, invia il modulo.Interrompi invio modulo invio chiave jquery ui

Io sto usando questo in un sito Web. NET, quindi potrebbe esserci una gestione javascript associata al modulo che .NET sta iniettando che sta sovrascrivendo il materiale jQuery (sto speculando qui).

risposta

14

È possibile utilizzare un gestore di eventi su di esso.

$("#searchTextBox").keypress(function(e) { 
    var code = (e.keyCode ? e.keyCode : e.which); 
    if(code == 13) { //Enter keycode 
     return false; 
    } 
}); 

vedi: jQuery Event Keypress: Which key was pressed?

anche: http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/javascript-char-codes-key-codes.aspx per la lista dei codici dei tasti

+0

Buon esempio! Prova anche '... if (code == $ .ui.keyCode.ENTER) {return false; } ... '. Guarda un sozzo https://api.jqueryui.com/jQuery.ui.keyCode/ .. jzm thanks – KingRider

4

Un modo è gestire la pressione dei tasti e ignorarla se è il tasto Invio.

+1

Ma voglio solo ignorare il tasto Invio se viene premuto quando si seleziona l'opzione dalla lista di completamento automatico. Se l'utente non è focalizzato sull'elenco delle opzioni di completamento automatico, desidero che il modulo venga inviato. –

+1

@JohnieKarr: Mi piacerebbe vederti rispondere a una domanda che stavo cercando ... –

5
$("#autocomplete_field_id").keypress(function(event){ 
    var keycode = (event.keyCode ? event.keyCode : event.which); 
    if (keycode == '13') { 
    event.preventDefault(); 
    event.stopPropagation();  
    } 
}); 
2

Il post risposta asso mi ha aiutato a risolvere il mio problema. Mentre dovresti notare che il codice asso fornito deve esistere prima del $('input').autocomplete(*****), altrimenti non riceverai alcun effetto.

2

Se si vuole ancora la chiave di presentare entrare, dopo la selezione di completamento automatico è fatta,

if (evt.keyCode === 13 && !$('.ui-autocomplete').is(':visible')) { 
    $('.ui-button:first').click(); 
} 
evt.stopPropagation(); 
+2

Questo non funziona per me, perché quando l'evento arriva alla mia funzione di callback, il completamento automatico non è già visibile. –

Problemi correlati