jquery - not - onkeyup javascript ejemplo
jQuery keyup y ''enter'' en Safari (5)
Los navegadores pueden variar en cuanto a qué evento desencadena un envío. En este caso, Safari puede estar enviando en el evento keydown.
Puede mirar el evento de envío sin cambiar el marcado y cancelarlo:
$(''#the-id-of-the-form'').submit( function( e ) {
e.preventDefault();
});
Luego puede escuchar el evento de teclado y manejarlo como lo está haciendo ahora.
Estoy usando jQuery y quiero que el usuario pueda presionar enter luego de ingresar datos en un campo de búsqueda para comenzar la búsqueda.
Estoy usando el siguiente código:
$(''#textSearch'').keyup(function (event) {
if (event.keyCode == ''13'') {
doSearch();
}
return false;
});
Funciona perfecto en Firefox e IE, pero no en absoluto en Safari. Lo que sucede es que el formulario se envía cuando presiono Enter in Safari y eso no es lo que quiero.
Añadiendo onsubmit = "return false;" al formulario funciona, pero no es una opción, ya que la etiqueta del formulario está en una página maestra de una página asp.net y necesito que el formulario se envíe en otras páginas.
¿Hay alguna manera de que esta característica también funcione en Safari?
EDITAR: También intenté mostrar una alerta en lugar de la función doSearch (). La alerta aparece bien, pero después de eso se envía el formulario.
Prueba esto:
$(''#textSearch'').keyup(function (event) {
var key = event.keyCode || event.which;
if (key === 13) {
doSearch();
}
return false;
});
agregar prevenir la desaparición
$(''#textSearch'').keyup(function (event) {
if (event.keyCode == ''13'') {
event.preventDefault();
doSearch();
}
return false;
});
Uso "keydown" porque "keyup" no funcionó para mí. También necesitaba que esta entrada se deshabilitara con los campos de entrada que estoy agregando con AJAX, por lo tanto el "en vivo".
Deberá vincular un controlador de "cambio" al campo. Esta versión sale del campo ("desenfoque") y luego activa un cambio en el campo, luego dispara el cambio. Sin la falta de definición, ¡el cambio se desencadena dos veces!
$(''#textSearch'').live(''keydown'', function(event) {
if(event.keyCode == 13)
{
$(event.target).blur();
$(event.target).change();
event.preventDefault();
return false;
}
});
Uso "keydown" porque "keyup" no funcionó para mí. También necesitaba que esta entrada se deshabilitara con los campos de entrada que estoy agregando con AJAX, por lo tanto el "en vivo".
Deberá vincular un controlador de "cambio" al campo. Esta versión sale del campo ("desenfoque") y luego activa un cambio en el campo, luego dispara el cambio. Sin la falta de definición, ¡el cambio se desencadena dos veces!
$(''#textSearch'').live(''keydown'', function(event) {
if(event.keyCode == 13)
{
$(event.target).blur();
$(event.target).change();
event.preventDefault();
return false;
}
}
);