Проверка пароля с 8 символами и 2 цифрами не работает - PullRequest
0 голосов
/ 27 января 2019

Эй, я пытаюсь заставить этот валидатор работать с 8 символами и 2 цифрами, но ... это не так.Я не вижу, что что-то не так с моим кодом. Моя консоль не говорит, что есть ошибка

                    <div class="field with-indicator">
                        <label for="pass-one">Password:</label>
                        <input type="text" name="pass-one" id="pass-one" />
                        <span id="validity" class="indicator">Not Ok</span>
                    </div>

<script>
    let input = document.getElementById('pass-one');
let regex = new RegExp("^(?=(.*[a-zA-Z]){1,})(?=(.*[0-9]){2,}).{8}$");

if ( !regex.test(input)) 
{
document.getElementById("validity").innerHTML = "Not Ok";
//return false;           
  } 
else 
  {
   document.getElementById("validity").innerHTML = "Ok";
   }


</script>

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Чтобы ваш код работал, вам нужно поместить его в обработчик событий. Например, вы можете использовать событие change и addEventListener () , чтобы установить обработчик:

document.getElementById('pass-one').addEventListener('change', function(e) {
    let regex = new RegExp("^(?=(.*[a-zA-Z]){1,})(?=(.*[0-9]){2,}).{8}$");

    if ( !regex.test(this.value)) {
        document.getElementById("validity").innerHTML = "Not Ok";
        //return false;
    } else {
        document.getElementById("validity").innerHTML = "Ok";
    }
})
<div class="field with-indicator">
    <label for="pass-one">Password:</label>
    <input type="text" name="pass-one" id="pass-one" />
    <span id="validity" class="indicator">Not Ok</span>
</div>
0 голосов
/ 27 января 2019

Попробуйте сделать проверку, например. после каждого ввода изменяется oninput="validPass()" (я не изменяю ваше регулярное выражение, но добавляю функцию-обертку validPass () и событие в вас <input> тег во фрагменте ниже - но если вы хотите, чтобы пароль был не менее 8 символов или длиннее, измените последнюю часть в регулярное выражение .{8}$ до .{8,}$)

let input = document.getElementById('pass-one');
let regex = new RegExp("^(?=(.*[a-zA-Z]){1,})(?=(.*[0-9]){2,}).{8}$");

function validPass() {

  if ( !regex.test(input.value)) 
  {
  document.getElementById("validity").innerHTML = "Not Ok";      
  } 
  else 
  {
   document.getElementById("validity").innerHTML = "Ok";
   }
}
<div class="field with-indicator">
    <label for="pass-one">Password:</label>
    <input type="text" name="pass-one" id="pass-one" oninput="validPass()" />
    <span id="validity" class="indicator" >Not Ok</span>
</div>
...