jQuery contraseña fuerza corrector

Soy bastante nuevo en jQuery, y he escrito una función simple para comprobar la fortaleza de una contraseña por cada pulsación de tecla.

La idea es que cada vez que un usuario entra a un personaje, el contenido es evaluado para comprobar la fortaleza de la contraseña que ha introducido… estoy seguro de que todo el mundo ha visto antes.

De todos modos, la lógica que han utilizado es que la contraseña no comienza con un valor de 1. Cuando un menor caso se utiliza el carácter, la puntuación se incrementa a 2. Cuando un dígito se utiliza la puntuación se incrementa en 1 de nuevo, lo mismo para cuando un carácter en mayúscula se utiliza y cuando la contraseña se convierte en 5 o más caracteres de longitud.

Lo que se devuelve es la fortaleza de la contraseña hasta ahora como un valor de 1 a 5 cada vez que se pulsa una tecla.

Así, sobre mi pregunta. La manera en que he hecho no parece muy jQuery como… casi como yo bien podría haber hecho directamente javascript. También me preguntaba acerca de mi lógica. He hecho todo lo que hagan o pasado por alto algo? Cualquier sugerencias de las personas más inteligentes que yo?

Cualquier sugerencia o consejo se agradece.

$(document).ready(function(){

        $("#pass_strength").keyup(function() {

            var strength = 1;

            /*length 5 characters or more*/
            if(this.value.length >= 5) {
                strength++;
            }

            /*contains lowercase characters*/
            if(this.value.match(/[a-z]+/)) {
                strength++;
            }

            /*contains digits*/
            if(this.value.match(/[0-9]+/)) {
                strength++;
            }

            /*contains uppercase characters*/
            if(this.value.match(/[A-Z]+/)) {
                strength++;
            }

            alert(strength);
        });
     });
InformationsquelleAutor Evernoob | 2009-09-07

2 Kommentare

  1. 29

    La mejor manera es tomar un plugin existente como TJB sugerido.

    Cuanto a tu pregunta sobre el código de sí mismo, una manera mejor es escribir así:

    var pass = "f00Bar!";
    
    var strength = 1;
    var arr = [/.{5,}/, /[a-z]+/, /[0-9]+/, /[A-Z]+/];
    jQuery.map(arr, function(regexp) {
      if(pass.match(regexp))
         strength++;
    });

    (Modificado para corregir errores de sintaxis.)

    • Puede usted explicar lo que esto hace: /{5\,}/
    • Debe ser /.{5,}/. La coma significa «sin límite superior». Sin la coma se trataría de coincidir exactamente con 5 caracteres.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea