prima domanda (e si spera, ma dubbiosamente la mia unica)Comportamento dell'interfaccia utente jQuery UI. Come cercare testo libero su invio?
Sto usando il completamento automatico dell'interfaccia utente jQuery. Ecco un codice di esempio per replicare il mio problema.
var suggestions = ["C", "Clojure", "JavaScript", "Perl", "PHP"];
$("#autocomplete").autocomplete({
source: suggestions
});
Quando un utente digita 'J' che sarà presentato con 'Clojure' e 'JavaScript' come suggerimenti.
Ho omesso Java da questo elenco, se l'utente desidera cercare Java, digita "Java", premere il tasto Invio ma il modulo non viene inviato. Se aggiungi uno spazio, il suggerimento "JavaScript" scompare e il modulo può essere inviato premendo il tasto Invio.
Sto creando una ricerca gratuita, voglio che gli utenti possano cercare premendo enter anche se ci sono suggerimenti disponibili.
$("#autocomplete").keypress(function(event) {
alert(event.keyCode);
if (event.keyCode=='13') $this.closest('form').submit();
});
Ho provato il pensiero sopra ho potuto rilevare manualmente una pressione del tasto presentare e inviare il modulo, ma l'allarme mostra tutte le chiavi vengono rilevati TRANNE presentare che sembra essere soppressa dal completamento automatico.
Qualsiasi aiuto è molto apprezzato! Grazie.
Ciao, mi fa piacere che ti prendi la briga di rispondere. – John
Oops, sembra Stack Overflow ha il problema opposto e inserire inviato la mia risposta, invece della nuova linea mi aspettavo! Questo codice non risolve il problema, per qualche motivo il tasto invio, il codice '13' non viene riconosciuto con il tasto premuto. È come se fosse stato intenzionalmente disabilitato, non riesco proprio a capire come abilitarlo! Se si crea un div con id = 'key' e si aggiunge quanto segue all'interno della funzione keypress: $ ('# chiave'). Text ('Key:' + e.keyCode); e scrivi vedrai cosa intendo!Riceverai '13' solo se non ci sono suggerimenti. Qualche idea su come costringerlo a presentare per entrare? Grazie! – John
Grazie per l'aggiornamento ... non ho ancora funzionato con la mia parte (ho usato Chrome, il tuo browser potrebbe funzionare in modo diverso?) Ma sono riuscito a farlo funzionare anche qui. Guardando il codice di completamento automatico aveva un binding keydown dove premuto il tasto invio: if (self.menu.element.is (": visible")) {event.preventDefault(); } Questo è ciò che ha fermato il modulo di invio su invio (il comportamento predefinito che ho provato a ripristinare!). Con questo in mente, tutto ciò che dobbiamo fare è sostituire keypress con keydown e il nostro codice funziona nei browser che ho provato. Grazie per il vostro aiuto! – John