jquery - funcion - evitar submit al presionar enter
Cómo obtener la tecla Intro dentro de un cuadro de texto para activar una función y no el botón primero/predeterminado (4)
Estoy tratando de obtener la tecla Enter para activar una función cuando se presiona cuando está dentro de un cierto cuadro de texto, y no activar el primer botón o el predeterminado.
Puede ver un ejemplo de lo que está sucediendo aquí: http://jsfiddle.net/cutsomeat/WZ6TM/1/
Si presiona otras teclas obtendrá un cuadro de alerta con el código clave, pero si presiona la tecla Entrar no obtendrá el cuadro de alerta con el código clave, sino el cuadro de alerta dentro del evento de clic del botón.
Obviamente, la tecla Enter activa el botón. ¿Hay alguna manera de evitar esto y, en su lugar, capturar la tecla Enter en el evento keyup y luego activar otra función?
Haga e.preventDefault()
en keyDown para evitar la acción predeterminada del botón:
$(''#myText'').keydown(function(e) {
if (e.keyCode == 13) {
e.preventDefault();
}
alert(e.keyCode);
});
Prueba esto:
$(''#myText'').live("keypress", function(e) {
if (e.keyCode == 13) {
alert("Enter pressed");
return false; // prevent the button click from happening
}
});
Use .on()
como .live()
ha quedado deprecated .
$(document).on("keypress", ".myText", function(e) {
if (e.which == 13) {
//do some stuff
}
});
$(document).ready(function() {
$(''#myText'').keypress(function(e) {
if ( e.keyCode == 13 ) { // detect the enter key
$(''#myButton'').click(); // fire a sample click, you can do anything
}
});
$(''#myButton'').click(function(e) {
alert(''Button click activated!'');
});
});
Para elementos en vivo usa .on()
como a continuación:
$(document).ready(function() {
$(document).on(''keypress'', ''#myText'', function(e) {
if ( e.keyCode == 13 ) { // detect the enter key
$(''#myButton'').click(); // fire a sample click, you can do anything
}
});
$(document).on(''click'', ''#myButton'', function(e) {
alert(''Button click activated!'');
});
});