2012-06-22 42 views
5

Tengo un form básico con search input y submit button dentro. Cuando el foco tiene lugar en el input, el teclado se muestra como se esperaba. Cuando presiono button, se produce el evento de envío de formulario, en el que llamo al event.preventDefault() y en su lugar hago una llamada ajax. Sin embargo, cuando presiono el botón de búsqueda en el teclado, el teclado simplemente se oculta y no se produce ningún evento de envío.Mobile Safari Keyboard Formulario de envío

¿Por qué el formulario no se envía cuando presiono buscar en el teclado? ¿Cómo puedo activar este evento a través del botón de búsqueda del teclado?

Gracias.

+0

Se puede publicar código? No deberías necesitar escuchar un evento. –

+0

En realidad necesitas escuchar un evento si quieres usar 'ajax' – Trevor

+0

Oh gotcha, normalmente uso el formulario para enviar mis datos a través de ajax. puede serializar los datos del formulario en json y enviarlos directamente. Mucho más fácil que tener que conectar cada entrada a un modelo directamente. –

Respuesta

5

El botón de búsqueda del teclado debe estar vinculado a un evento de pulsación de tecla y tiene el keycode de 13.

Básicamente, escuchar keypress eventos y volver todas las llamadas excepto e.which === 13

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

    // ajax code 
} 
Cuestiones relacionadas