Saltar al contenido

¿Cómo saber si el bloqueo de mayúsculas está activado con JavaScript?

Solución:

En jQuery,

$('#example').keypress(function(e) { 
    var s = String.fromCharCode( e.which );
    if ( s.toUpperCase() === s && s.toLowerCase() !== s && !e.shiftKey ) {
        alert('caps is on');
    }
});

Evite el error, como la tecla de retroceso, s.toLowerCase() !== s es necesario.

Puedes usar un KeyboardEvent para detectar numerosas teclas, incluido el bloqueo de mayúsculas en los navegadores más recientes.

los getModifierState La función proporcionará el estado para:

  • Alt
  • AltGraph
  • Bloq Mayús
  • Control
  • Fn (Android)
  • Meta
  • Num lock
  • SO (Windows y Linux)
  • ScrollLock
  • Cambio

Esta demostración funciona en todos los navegadores principales, incluido el móvil (caniuse).

passwordField.addEventListener( 'keydown', function( event ) {
  var caps = event.getModifierState && event.getModifierState( 'CapsLock' );
  console.log( caps ); // true when you press the keyboard CapsLock key
});

Puedes 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 me funcionan. Gracias por las aportaciones constructivas 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:

function isCapslock(e) {
  const IS_MAC = /Mac/.test(navigator.platform);

  const charCode = e.charCode;
  const shiftKey = e.shiftKey;

  if (charCode >= 97 && charCode <= 122) {
    capsLock = shiftKey;
  } else if (charCode >= 65 && charCode <= 90
    && !(shiftKey && IS_MAC)) {
    capsLock = !shiftKey;
  }

  return capsLock;
}

VERSIÓN ANTIGUA:

function isCapslock(e) {
  e = (e) ? e : window.event;

  var charCode = false;
  if (e.which) {
    charCode = e.which;
  } else if (e.keyCode) {
    charCode = e.keyCode;
  }

  var shifton = false;
  if (e.shiftKey) {
    shifton = e.shiftKey;
  } else if (e.modifiers) {
    shifton = !!(e.modifiers & 4);
  }

  if (charCode >= 97 && charCode <= 122 && shifton) {
    return true;
  }

  if (charCode >= 65 && charCode <= 90 && !shifton) {
    return true;
  }

  return false;
}

Para caracteres internacionales, se puede agregar una verificación adicional para las siguientes teclas según sea necesario. Debe obtener el rango de código de clave para los caracteres que le interesan, puede ser mediante el uso de una matriz de mapeo de teclas que contendrá todas las claves de casos de uso válidas a las que se dirige …

mayúscula AZ o ‘Ä’, ‘Ö’, ‘Ü’, minúscula aZ o 0-9 o ‘ä’, ‘ö’, ‘ü’

Las claves anteriores son solo una representación de muestra.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *