2012-02-05 88 views
58

Tengo un cuadro de búsqueda en mi sitio que. Actualmente, los usuarios deben hacer clic en el botón Enviar junto al cuadro para buscar a través de la publicación de jquery. Me gustaría que los usuarios también presionen Enter para buscar. ¿Cómo puedo hacer esto?Activar un evento en `clic` y` enter`

JQUERY:

$('document').ready(function(){ 
    $('#searchButton').click(function(){ 
     var search = $('#usersSearch').val(); 
     $.post('../searchusers.php',{search: search},function(response){ 
      $('#userSearchResultsTable').html(response); 
     }); 
    }); 
}); 

HTML:

<input type='text' id='usersSearch' /><input type='button' id='searchButton' value='search' /> 
+2

Ver aquí: http://stackoverflow.com/questions/699065/submitting-a-form-on-enter-with-jquery – mowwwalker

+0

Sí, la función de búsqueda es útil ... – elclanrs

Respuesta

87

Uso keypress evento en usersSearch cuadro de texto y busque Introduzca botón. Si se presiona el botón Entrar, active el evento de clic del botón de búsqueda que hará el resto del trabajo. Prueba esto.

$('document').ready(function(){ 
    $('#searchButton').click(function(){ 
     var search = $('#usersSearch').val(); 
     $.post('../searchusers.php',{search: search},function(response){ 
      $('#userSearchResultsTable').html(response); 
     }); 
    }) 
    $('#usersSearch').keypress(function(e){ 
     if(e.which == 13){//Enter key pressed 
      $('#searchButton').click();//Trigger search button click event 
     } 
    }); 

}); 

Demo

+1

Mejor aún: utilice el evento de teclado en su lugar para asegurarse de que su función solo se active una vez. Gracias a @StevePaulo por su comentario en [esta respuesta] (http://stackoverflow.com/a/155263/461544). – steps

+1

Un inconveniente de utilizar la función de teclado que acabo de descubrir: no podrá evitar la acción predeterminada, ya que el evento de activación solo se activará _después_ se ejecutará la acción predeterminada para la clave (consulte [aquí] (http: // www.quirksmode.org/dom/events/keys.html)). – steps

5

Algo como esto va a funcionar

$('#usersSearch').keypress(function(ev){ 
    if (ev.which === 13) 
     $('#searchButton').click(); 
}); 
+0

, pero ¿cómo puedo usar ambas, presionar buscar o presionar enter? – kirby

+1

Pones el código que agregué además del código que ya tienes. Entonces ambos funcionarán. – jopke

2
$('#form').keydown(function(e){ 
    if (e.keyCode === 13) { // If Enter key pressed 
     $(this).trigger('submit'); 
    } 
}); 
+0

Esto funcionó para mí :) –

0

Tome un vistazo a la keypressfunction.

Creo que la clave enter es 13 por lo que querría algo así como:

$('#searchButton').keypress(function(e){ 
    if(e.which == 13){ //Enter is key 13 
     //Do something 
    } 
}); 
1
$('#usersSearch').keyup(function() { // handle keyup event on search input field 

    var key = e.which || e.keyCode; // store browser agnostic keycode 

    if(key == 13) 
     $(this).closest('form').submit(); // submit parent form 
} 
40

Se llama a los dos detectores de eventos utilizando .on() luego usar un if dentro de la función:

$(function(){ 
    $('#searchButton').on('keypress click', function(e){ 
    var search = $('#usersSearch').val(); 
    if (e.which === 13 || e.type === 'click') { 
     $.post('../searchusers.php', {search: search}, function (response) { 
     $('#userSearchResultsTable').html(response); 
     }); 
    } 
    }); 
}); 
+8

¿Por qué esta respuesta no recibe más votos? Me refiero a que esto es bloques de código menores (como no agregar otro evento para activar un clic). Cualquier inconveniente de esto? –

+4

Esta respuesta es mejor que una aceptada – sagarthapa

+0

Verdaderamente dicho, Nin-ya & sagarthapa. –

Cuestiones relacionadas