2012-06-22 19 views
5

Ho uno form di base con uno search input e uno submit button all'interno. Quando la messa a fuoco avviene nello input, la tastiera viene visualizzata come previsto. Quando premo il button, si verifica l'evento di invio del modulo, in cui chiamo event.preventDefault() e invece effettuo una chiamata Ajax. Tuttavia, quando premo il pulsante per la ricerca sulla tastiera, la tastiera si nasconde e non si verifica alcun evento di invio.Invio modulo tastiera mobile Safari

Perché il modulo non viene inviato quando si preme la ricerca sulla tastiera? Come posso attivare questo evento tramite il pulsante di ricerca della tastiera?

Grazie.

+0

Puoi pubblicare il codice? Non dovresti aver bisogno di ascoltare un evento. –

+0

In realtà è necessario ascoltare un evento se si desidera utilizzare 'ajax' – Trevor

+0

Oh gotcha, normalmente utilizzo il modulo di invio per inviare i miei dati tramite ajax. è possibile serializzare i dati del modulo in json e inviarlo direttamente. Molto più facile che dover collegare direttamente ogni input a un modello. –

risposta

5

Il pulsante di ricerca della tastiera deve essere associato a un evento di pressione tasti e ha lo keycode di 13.

In sostanza, ascoltare keypress eventi e tornare tutte le chiamate tranne e.which === 13

$('input').on('keypress', function (e) { 
    if (e.which !== 13) { 
     return; 
    } 

    // ajax code 
} 
Problemi correlati