Por lo tanto, tengo algunos problemas para ejecutar mi secuencia de comandos SI se presiona la tecla Tabulador. Después de buscar en Google rápidamente, el código de caracteres para la pestaña es 9. Además, mientras hablamos, ¿hay alguna forma mejor de verificar si se presiona una tecla sin usar códigos de caracteres? Lo pregunto porque sigo recibiendo la siguiente advertencia de Firebug cuando uso el código de caracteres:
No se debe utilizar la propiedad 'charCode' de un evento keyup. El valor no tiene sentido.
De todos modos, todavía funciona, así que ese no es el problema. Este es el código que uso:
$('/* my inputs */').keyup(function(e) { console.log('keyup called'); var code = e.keyCode || e.which; if (code == '9') { console.log('Tab pressed'); } });Usando el código anterior, la consola se deja en blanco, no se agrega nada (usando Firebug). Por supuesto, he intentado hacer cosas en lugar de registrar texto, pero nada se ejecuta. Entonces, ¿alguien puede ver por qué esto no funciona? ¿Hay una mejor manera de verificar si se presiona una tecla?
Gracias por adelantado.
Mi corazonada es que cuando presiona la tecla de tabulación, la entrada de su formulario pierde el foco, antes de que ocurra la tecla. Intenta cambiar el enlace al cuerpo, así:
$('body').keyup(function(e) { console.log('keyup called'); var code = e.keyCode || e.which; if (code == '9') { alert('Tab pressed'); } });Luego, si eso funciona (lo hace para mí), intente cambiar el enlace a keyDown, en su lugar, y devuelva falso. De esa manera, puede implementar su propio comportamiento personalizado.
$('.yourSelector').keydown(function(e) { console.log('keyup called'); var code = e.keyCode || e.which; if (code == '9') { alert('Tab pressed'); return false; } });Uno de estos dos debería funcionar... si es el cuerpo, puede adjuntar un controlador de teclas en el cuerpo, luego, si es una pestaña, busque el campo con foco (¿creo que hay una función .hasFocus()?), y si es el que usted querer, proceder y devolver falso. De lo contrario, deja que el navegador haga lo suyo.
Si desea actualizar el campo CON un carácter de tabulación, intente esto en su devolución de llamada:
var theVal = $(this).val(); theVal = theVal + ' '; $(this).val(theVal);No lo he probado, pero debería funcionar. También puede agregar 3 o 4 espacios en lugar del carácter de tabulación, si le causa problemas.
e = e || window.event; if(e.keyCode == 9) alert("Tab pressed");Prueba esto
si no sucede nada sin importar qué tecla presione, ¿quizás haya algún problema con el selector que está usando? ¿Puede verificar que está seleccionando correctamente, tal vez con algo como:
console.log($('/* my inputs */').length);