Проверка по-прежнему применяется, если поле ввода пусто и неправильно считает

У меня есть поле пароля, которое я хочу проверить по трем условиям. Когда я соответствую всем критериям, он пропускает одну силу: слабый.

Когда я очищаю поле ввода, одно выражение регулярного выражения все еще соответствует критериям, и я не знаю почему.

Проскакивает слабая сила и когда убираешь все. Сила остается на низком уровне, но она должна иссякнуть. Есть предложения, что не так или как я могу это исправить? заранее спасибо

Это мой HTML:

<label class = "customer__form-field js-cm-field">
                        <span>{{'form.password' | trans}} *</span>
                        <input type = "password"
                               name = "password"
                               required>
                    </label>
                    <div class = "password-strength progress js-cm-password-strength" data-passwordstrength = "empty">
                        <div class = "progress-bar" role = "progressbar">
                            Strength
                        </div>
                    </div>

                    <ul class = "password-tips">
                        <li class = "letters" data-letters = "false">
                            <i class = "fa fa-check"></i>
                            lower and uppercase letters
                            Kleine letters en hoofdletters.
                        </li>
                        <li class = "numbers" data-numbers = "false">
                            <i class = "fa fa-check"></i>
                            letters and numbers
                            Letters en cijfers.
                        </li>
                        <li class = "characters" data-characters = "false">
                            <i class = "fa fa-check"></i>
                            special characters
                            Speciale characters
                        </li>
                    </ul>

Это мой JS

var validation_message = "";
function returnError () {
    return validation_message;
};

// Password validation
$.validator.addMethod("password", function(value) {
  var strength = {
        0: "empty",
        1: "bad",
        2: "weak",
        3: "strong"
    };
    var score = 0;
    // If password contains both lower and uppercase characters, increase strength value.
    if (value.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) {
         score += 1;
        $('.letters').attr('data-letters', "true");
        $('.js-cm-password-strength').attr('data-passwordstrength', strength[score]);
    } else {
        score -= 1;
        $('.letters').attr('data-letters', "false");
        $('.js-cm-password-strength').attr('data-passwordstrength', strength[score]);
    }
    // // // If it has numbers and characters, increase strength value.
    if (value.match(/([a-zA-Z])/) && value.match(/([0-9])/)) {
        score += 1;
        $('.numbers').attr('data-numbers', "true");
        $('.js-cm-password-strength').attr('data-passwordstrength', strength[score]);
    } else {
        score -= 1;
        $('.numbers').attr('data-numbers', "false");
        $('.js-cm-password-strength').attr('data-passwordstrength', strength[score]);
    }
    // // // If it has one special character, increase strength value.
    if (value.match(/([!,%,&,@,#,$,^,*,?,_,~])/)) {
        score += 1;
        $('.characters').attr('data-characters', "true");
        $('.js-cm-password-strength').attr('data-passwordstrength', strength[score]);
    } else {
        score -= 1;
        $('.characters').attr('data-characters', "false");
        $('.js-cm-password-strength').attr('data-passwordstrength', strength[score]);
    }

    if (score < 1) {
        validation_message = "Het wachtwoord is te zwak kijk bij de tips om het wachtwoord sterker te maken.";
        return false;
    } else {
        return true;
    }
}, returnError);

Правила проверки jQuery http://jqueryvalidation.org/validate/

        rules: {
            password: {
                password: true
            },
        }

Попробуйте сменить score < 1 на score < 0

Lublaut 29.11.2018 12:39

@Lublaut не помогает

The M 29.11.2018 13:08

Каково ваше состояние для пустой?

Lublaut 29.11.2018 13:13

@Lublaut, это проблема, я пробовал value.length, null, "" и т.д., неважно, что я использую. это не снижает оценку

The M 29.11.2018 13:17

Вы говорите, что что бы вы ни делали, сила всегда плохая? даже для сильных и слабых?

Lublaut 29.11.2018 13:21

@Lublaut Я говорю так: когда вы находитесь в форме, атрибут данных пуст. Я ввожу пароль, который соответствует 1 критерию. Например, aaaaaA (нижний и верхний регистры). Теперь становится плохо. Я добавляю число aaaaaaA $ (критерий символа), он принимает его, но сила все еще плохая. Когда я добавляю число aaaaaaA $ 1 (критерий числа). Это идет к силе хорошо. Так что скачет слабо. Когда я удаляю все, пустое поле ввода. Он не сбрасывается должным образом. Так что я по-прежнему соответствую всем критериям. Когда я снова вставляю букву "а". Он сбрасывается, он должен сбрасываться, когда он пустой.

The M 29.11.2018 13:34

Второй критерий не выполняется, потому что не выполняется второе условие .... Попробуйте удалить всю часть еще, а также изменить оценка <1 на оценка <0.

Lublaut 29.11.2018 13:38

@Lublaut Когда я заполняю значения для второго критерия: он исключает: $ ('. Numbers'). Attr ('data-numbers', "true"); Как это может быть не так?

The M 29.11.2018 13:54

второе условие ложно для примера aaaaaaaaaaaA $

Lublaut 29.11.2018 14:02

@Lublaut Значит, он должен содержать цифру и букву, а не только. Потому что $ - это символ, и это делает условие ложным.

The M 29.11.2018 14:14

@Lublaut, у меня эта часть работает, иначе она не сбрасывает атрибуты данных. Так что счет остается хорошим. Это не пойдет

The M 29.11.2018 14:48
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
11
36
0

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