js Запрет на ввод определенных символов

Сообщения
1,055
Реакции
212
Предупреждения
9
Помог
6 раз(а)
Здравствуйте, столкнулся с проблемой

JavaScript:
let form = document.querySelector('.formWithValidation');
let password = form.querySelector('.password');
let passwordConfirmation = form.querySelector('.passwordConfirmation');
let fields = form.querySelector('.field');


function removeValidation() {
    let errors = form.querySelectorAll('.error'),
        succesful = form.querySelectorAll('.succesful')
 
    for (let i = 0; i < errors.length; i++) {
      errors[i].remove();
    }

    for (let i = 0; i < succesful.length; i++) {
      succesful[i].remove();
    }
}

function checkFieldsPresence(){
      if (!fields.value) {
        fields.insertAdjacentHTML('afterEnd', '<span class="error"><i class="fa-solid fa-xmark"></i> Заполните поле</span>');
        fields.style.border = '1px solid red';
      }else{
        if(fields.value == "^[a-zA-Z0-9_]*$"){ // Проблема тут
          fields.insertAdjacentHTML('afterEnd', '<span class="error"><i class="fa-solid fa-xmark"></i> Заполните</span>');
          return;
        }
        fields.insertAdjacentHTML('afterEnd', '<i class="fa-solid fa-check succesful">');
        fields.style.border = '1px solid green';
      }
}

function Check(){
  setTimeout(checkPasswordMatch, 500);
}

function checkPasswordMatch () {
    if(password.value !== passwordConfirmation.value || password.value == '' || passwordConfirmation.value == '') {
      password.insertAdjacentHTML('afterEnd', '<span class="error">Пароли не совпадают</span>');
      password.style.border = '1px solid red';
      passwordConfirmation.style.border = '1px solid red';
    }else if(password.value === passwordConfirmation.value){
      password.insertAdjacentHTML('afterEnd', '<i class="fa-solid fa-check succesful"></i>');
      password.style.border = '1px solid green';
      passwordConfirmation.style.border = '1px solid green';
      removeValidation();
    }
}

function CheckDate(){
  removeValidation();
  checkFieldsPresence();
}
Как в input запретить ввод определенных символов ($*&@#!)( и тд) регулярное выражение некорректно отрабатывает, пробовал в pattern тоже самое
 
В этой теме было размещено решение! Перейти к решению.

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Не хочешь регулярку - извращайся: indexOf, либо циклом сплитить каждый символ в строке.
 
Сообщения
1,055
Реакции
212
Предупреждения
9
Помог
6 раз(а)
RockTheStreet, да я не против регулярки, но условие на проверку через регулярку отрабатывает некорректно

JavaScript:
        if(fields.value == "^[a-zA-Z0-9_]*$"){ // Проблема тут
          fields.insertAdjacentHTML('afterEnd', '<span class="error"><i class="fa-solid fa-xmark"></i> Заполните</span>');
          return;
}
Делаю так, но любой символ показывает, что не корректный, делаю на != пропускает каждый символ
1 Дек 2022
JavaScript:
if(!/^[a-zA-Zа-яёА-ЯЁ0-9_]*$/.test(fields.value)){
    fields.insertAdjacentHTML('afterEnd', '<span class="error"><i class="fa-solid fa-xmark"></i> Заполните</span>');
    return;
}
Разобрался. Решение приложил
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу