Новый JQuery Validator

В настоящее время я использую проверку формы и комплексизацию вместе в поле пароля. Оба работают хорошо, используя этот код:

<script>
  $('#signup_password').complexify({
    bannedPasswords: <?php echo json_encode($banned_passwords); ?>
  }, function (valid, complexity) {
    var passwordstrength = Math.round(complexity);
    $('#signup_password_strength')
      .progress({
        text: {
          percent : '{percent}%'
        },
        value: passwordstrength
      });
  });
</script>

То, что я пытаюсь сделать, это сказать: "Если пароль недостаточно безопасен, он недействителен". Я создаю совершенно новый валидатор, в котором Сложность вызывается и запускается, как на веб-сайте Form Validator... что-то, что может первоначально вызвать ответ "обратитесь в службу поддержки". Хорошо, но выслушай меня.

Это мой скрипт валидатора:

(function($) {
    FormValidation.Validator.password = {
        html5Attributes: {
            message: 'message',
            minimumChars: 'minchars',
            strengthScaleFactor: 'scale',
            bannedPasswords: 'bannedpasswords',
            minStrength: 'minstrength'
        },

        init: function(validator, $field, options) {

            var minimumChars    = options.minimumChars || 8,
                strengthScaleFactor = options.strengthScaleFactor || 1,
                bannedPasswords = options.bannedPasswords || [],
                minStrength = options.minStrength || 20;


            $field.complexify({
                minimumChars: minimumChars,
                strengthScaleFactor: strengthScaleFactor,
                bannedPasswords: bannedPasswords
            });

        },

        destroy: function(validator, $field, options) {
            $field.complexify('destroy');
        },

        validate: function(validator, $field, options) {
            var value = $field.val();
            var passwordstrength = $field.complexify(Math.round(complexity));

            if (passwordstrength === 0 && value.length > 0) {
                return {
                    valid: false,
                    banned: true,
                    score: 0,
                    message: 'banned'
                };
            }
            else if (passwordstrength === null || passwordstrength === 0 || value === '') {
                return {
                    valid: false,
                    score: 0
                };
            }
            else if (passwordstrength > 0 && passwordstrength < minStrength) {
                return {
                    valid: false,
                    score: passwordstrength,
                    message: 'weak'
                };
            }
            else
            {
              return {
                    valid: true,
                    score: passwordstrength
                };
            }
        }
    };
}(jQuery));

Когда я присоединяю этот валидатор ко входу, появляется ошибка консоли undefined is not an object (evaluating 'callback.call') Я полагаю, что это вызвано функцией 'init'. Я подготовил этот JSFiddle, чтобы правильно показать это.

Я думаю, это больше, что я не понимаю JavaScript больше, чем проблема, связанная с проверкой формы или сложностью.

0 ответов

Другие вопросы по тегам