¿Cómo saber si el bloqueo de mayúsculas está activado usando JavaScript?
Sin embargo, una advertencia: lo busqué en Google y la mejor solución que pude encontrar fue adjuntar un onkeypress
evento a cada entrada, luego verificar cada vez si la letra presionada era mayúscula, y si era así, verifique si también se mantuvo presionada la tecla shift. De lo contrario, el bloqueo de mayúsculas debe estar activado. Esto se siente realmente sucio y simplemente ... derrochador , ¿seguramente hay una mejor manera que esta?
javascript
keyboard
capslock
nickf
fuente
fuente
input type=password
input type=email
Respuestas:
Puede intentarlo. Se agregó un ejemplo de trabajo. Cuando el foco está en la entrada, activar el bloqueo de mayúsculas hace que el led se vuelva rojo, de lo contrario, verde. (No lo he probado en mac / linux)
NOTA: Ambas versiones están funcionando para mí. Gracias por aportes constructivos en los comentarios.
VERSIÓN ANTIGUA: https://jsbin.com/mahenes/edit?js,output
Además, aquí hay una versión modificada (¿alguien puede probar en Mac y confirmar)
NUEVA VERSIÓN: https://jsbin.com/xiconuv/edit?js,output
NUEVA VERSIÓN:
VERSIÓN ANTIGUA:
la función esCapslock (e) {
}
Para caracteres internacionales, se puede agregar una verificación adicional para las siguientes teclas según sea necesario. Debe obtener el rango de códigos de tecla para los caracteres que le interesan, puede ser mediante el uso de una matriz de asignación de teclas que contendrá todas las teclas de caso de uso válidas que está abordando ...
AZ mayúscula o 'Ä', 'Ö', 'Ü', aZ minúscula o 0-9 o 'ä', 'ö', 'ü'
Las teclas anteriores son solo representaciones de muestra.
fuente
En jQuery,
Evite el error, como la tecla de retroceso,
s.toLowerCase() !== s
es necesario.fuente
Puede usar a
KeyboardEvent
para detectar numerosas teclas, incluido el bloqueo de mayúsculas en los navegadores más recientes.La
getModifierState
función proporcionará el estado para:Esta demostración funciona en todos los principales navegadores, incluido el móvil ( caniuse )
fuente
Puede detectar el bloqueo de mayúsculas usando "es letra mayúscula y no se presiona ningún turno" usando una captura de pulsación de tecla en el documento. Pero es mejor que se asegure de que ningún otro controlador de pulsación de tecla muestre la burbuja de eventos antes de que llegue al controlador en el documento.
Puede tomar el evento durante la fase de captura en los navegadores que lo admiten, pero parece algo inútil ya que no funcionará en todos los navegadores.
No se me ocurre otra forma de detectar el estado de bloqueo de mayúsculas. La verificación es simple de todos modos y si se escribieron caracteres no detectables, bueno ... entonces la detección no era necesaria.
Hubo un artículo sobre 24 maneras en este último año. Bastante bueno, pero carece de soporte de carácter internacional (se usa
toUpperCase()
para evitar eso).fuente
Muchas respuestas existentes verifican el bloqueo de mayúsculas cuando no se presiona shift pero no lo verifican si presiona shift y se pone en minúsculas, o lo verificará pero no verificará también si el bloqueo de mayúsculas está desactivado, o lo verificará pero considerará las claves no alfa como 'desactivadas'. Aquí hay una solución adaptada de jQuery que mostrará una advertencia si se presiona una tecla alfa con mayúsculas (shift o no shift), apagará la advertencia si se presiona una tecla alfa sin mayúsculas, pero no la apagará o encenderá cuando se presionan números u otras teclas.
fuente
En JQuery Esto cubre el manejo de eventos en Firefox y verificará los caracteres inesperados en mayúsculas y minúsculas. Esto presupone un
<input id="password" type="password" name="whatever"/>
elemento y un elemento separado con id 'capsLockWarning
' que tiene la advertencia que queremos mostrar (pero está oculto de lo contrario).fuente
keypress
evento para hacer uso de diferentes casquillos en la entrada, porque amboskeydown
ykeyup
siempre devolverán mayúsculas . En consecuencia, esto no va a disparar la tecla BloqMayus ... si tuvo la intención de combinar cone.originalEvent.getModifierState('CapsLock')
Las mejores respuestas aquí no funcionaron para mí por un par de razones (código no comentado con un enlace inactivo y una solución incompleta). Así que pasé unas horas probando a todos y obteniendo lo mejor que pude: aquí está el mío, incluidos jQuery y no jQuery.
jQuery
Tenga en cuenta que jQuery normaliza el objeto de evento, por lo que faltan algunas comprobaciones. También lo reduje a todos los campos de contraseña (ya que esa es la razón más importante para necesitarlo) y agregué un mensaje de advertencia. Esto ha sido probado en Chrome, Mozilla, Opera e IE6-8. Estable y captura todos los estados de mayúsculas, EXCEPTO cuando se presionan números o espacios.
Sin jQuery
Algunas de las otras soluciones sin jQuery carecían de fallos de IE. @Zappa lo parchó.
Nota: Echa un vistazo a las soluciones de @Borgar, @Joe Liversedge y @Zappa, y el complemento desarrollado por @Pavel Azanov, que no he probado pero es una buena idea. Si alguien conoce una manera de expandir el alcance más allá de A-Za-z, edítelo. Además, las versiones jQuery de esta pregunta están cerradas como duplicadas, por eso publico ambas aquí.
fuente
Usamos
getModifierState
para verificar el bloqueo de mayúsculas, solo es un miembro de un evento de mouse o teclado, por lo que no podemos usar unonfocus
. Las dos formas más comunes en que el campo de contraseña se enfocará es con un clic o una pestaña. Usamosonclick
para verificar si hay un clic del mouse dentro de la entrada, y usamosonkeyup
para detectar una pestaña del campo de entrada anterior. Si el campo de contraseña es el único campo en la página y está autoenfocado, entonces el evento no ocurrirá hasta que se suelte la primera tecla, lo cual está bien pero no es ideal, realmente desea que se muestren las sugerencias de herramientas de bloqueo de mayúsculas una vez que el campo de contraseña gana enfoque, pero para la mayoría de los casos esta solución funciona de maravilla.HTML
JS
https://codepen.io/anon/pen/KxJwjq
fuente
event.getModifierState("CapsLock").
Sé que este es un tema antiguo, pero pensé en retroalimentarme en caso de que ayude a otros. Ninguna de las respuestas a la pregunta parece funcionar en IE8. Sin embargo, encontré este código que funciona en IE8. (Todavía no he probado nada por debajo de IE8). Esto se puede modificar fácilmente para jQuery si es necesario.
Y la función se llama a través del evento onkeypress como este:
fuente
Esta es una solución que, además de verificar el estado al escribir, también alterna el mensaje de advertencia cada vez que Caps Lockse presiona la tecla (con algunas limitaciones).
También admite letras que no están en inglés fuera del rango AZ, ya que comprueba el carácter de la cadena
toUpperCase()
y, entoLowerCase()
lugar de hacerlo, compara el rango de caracteres.Tenga en cuenta que observar la alternancia de bloqueo de mayúsculas solo es útil si conocemos el estado del bloqueo de mayúsculas antes de Caps Lockpresionar la tecla. El estado actual de bloqueo de mayúsculas se mantiene con una
caps
propiedad de JavaScript en el elemento de contraseña. Esto se establece la primera vez que tenemos una validación del estado de bloqueo de mayúsculas cuando el usuario presiona una letra que puede ser mayúscula o minúscula. Si la ventana pierde el foco, ya no podemos observar alternar el bloqueo de mayúsculas, por lo que debemos restablecer a un estado desconocido.fuente
Recientemente hubo una pregunta similar en hashcode.com, y creé un complemento jQuery para tratarlo. También es compatible con el reconocimiento de mayúsculas en los números. (En el diseño de teclado alemán estándar, el bloqueo de mayúsculas tiene efecto en los números).
Puede consultar la última versión aquí: jquery.capsChecker
fuente
Para jQuery con bootstrap de twitter
Verifique las mayúsculas bloqueadas para los siguientes caracteres:
AZ mayúscula o 'Ä', 'Ö', 'Ü', '!', '"', '§', '$', '%', '&', '/', '(', ')' , '=', ':', ';', '*', '' '
minúsculas aZ o 0-9 o 'ä', 'ö', 'ü', '.', ',', '+', '#'
demostración en vivo en jsfiddle
fuente
Una variable que muestra el estado de bloqueo de mayúsculas:
funciona en todos los navegadores => canIUse
fuente
Esta respuesta basada en jQuery publicada por @ user110902 fue útil para mí. Sin embargo, lo mejoré un poco para evitar una falla mencionada en el comentario de @B_N: no se detectó CapsLock mientras presiona Shift:
De esta manera, funcionará incluso mientras presiona Shift.
fuente
Este código detecta el bloqueo de mayúsculas sin importar el caso o si se presiona la tecla Mayús:
fuente
Escribí una biblioteca llamada capsLock que hace exactamente lo que quieres que haga.
Solo inclúyalo en sus páginas web:
Luego úselo de la siguiente manera:
Vea la demostración: http://jsfiddle.net/3EXMd/
El estado se actualiza cuando presiona la tecla Bloq Mayús. Solo usa el hack de la tecla Shift para determinar el estado correcto de la tecla Bloq Mayús. Inicialmente el estado es
false
. Así que ten cuidado.fuente
Sin embargo, otra versión, clara y simple, maneja mayúsculas mayúsculas y no se limita a ascii, creo:
Editar: El sentido de capsLockOn fue invertido, doh, corregido
Edición n. ° 2: después de revisar esto un poco más, he realizado algunos cambios, un código un poco más detallado por desgracia, pero maneja más acciones de manera adecuada.
El uso de e.charCode en lugar de e.keyCode y la comprobación de los valores 0 omite muchas pulsaciones de teclas sin caracteres, sin codificar nada específico para un idioma o conjunto de caracteres dado. Según tengo entendido, es un poco menos compatible, por lo que los navegadores más antiguos, no convencionales o móviles pueden no comportarse como este código espera, pero de todos modos vale la pena, para mi situación.
Verificar una lista de códigos de puntuación conocidos evita que sean vistos como falsos negativos, ya que no se ven afectados por el bloqueo de mayúsculas. Sin esto, el indicador de bloqueo de mayúsculas se oculta cuando escribe cualquiera de esos caracteres de puntuación. Al especificar un conjunto excluido, en lugar de uno incluido, debería ser más compatible con los caracteres extendidos. Este es el bit más feo y especial, y hay alguna posibilidad de que los idiomas no occidentales tengan diferentes signos de puntuación y / o códigos de puntuación como para ser un problema, pero nuevamente vale la pena en mi opinión, al menos para mi situación.
fuente
Reaccionar
fuente
Basado en la respuesta de @joshuahedlund ya que funcionó bien para mí.
Hice que el código fuera una función para poder reutilizarlo y lo vinculé al cuerpo en mi caso. Puede vincularse al campo de contraseña solo si lo prefiere.
fuente
La respuesta anterior de Mottie y Diego Vieira es lo que terminamos usando y debería ser la respuesta aceptada ahora. Sin embargo, antes de darme cuenta, escribí esta pequeña función de JavaScript que no se basa en códigos de caracteres ...
Luego llámalo en un controlador de eventos así
capsLockIsOnKeyDown.capsLockIsOnKeyDown(event)
Pero nuevamente, terminamos usando la respuesta de @Mottie sy @Diego Vieira
fuente
En este código a continuación, se mostrará alerta cuando las mayúsculas se bloqueen y presionen la tecla usando shift.
si devolvemos falso; entonces el char actual no se agregará a la página de texto.
fuente
prueba este código simple en fácil de entender
Este es el guión
Y el HTML
fuente
Intenta usar este código.
Buena suerte :)
fuente
Podrías usar este script . Debería funcionar bien en Windows incluso si se presiona la tecla Shift, pero no funcionará en Mac OS si es así.
fuente
Aquí hay un complemento jquery personalizado, que usa jquery ui, compuesto por todas las buenas ideas de esta página y aprovecha el widget de información sobre herramientas. El mensaje de bloqueo de mayúsculas se aplica automáticamente a todos los cuadros de contraseña y no requiere cambios en su html actual.
Código de enchufe personalizado ...
Aplicar a todos los elementos de contraseña ...
fuente
Código Javascript
Ahora necesitamos asociar este script usando HTML
fuente
es tarde, lo sé, pero esto puede ser útil para otra persona.
así que aquí está mi solución más simple (con caracteres turcos);
fuente
Así que encontré esta página y realmente no me gustaron las soluciones que encontré, así que descubrí una y la estoy ofreciendo a todos ustedes. Para mí, solo importa si el bloqueo de mayúsculas está activado si estoy escribiendo letras. Este código resolvió el problema para mí. Es rápido y fácil y le ofrece una variable capsIsOn para consultar siempre que la necesite.
fuente
Cuando escribe, si Caplock está activado, podría convertir automáticamente el carácter actual en minúsculas. De esa manera, incluso si los bloqueos están activados, no se comportará como en la página actual. Para informar a sus usuarios, puede mostrar un texto que indique que los bloqueos están activados, pero que las entradas del formulario se convierten.
fuente
Hay una solución mucho más simple para detectar el bloqueo de mayúsculas:
fuente