Валидация Email
Решил сделать валидацию, чтобы регистрация была доступна только для перечисленных почтовых ящиков.
Собрал код из разных кусков, немного доделал сам, теперь нужна помощь.
Вот сам скрипт
const EMAIL_REGEXP = /^[^ ]+\@(?=mail.ru$|gmail.com$|yandex.ru$|ukr.net$)/; const input = document.getElementById('user_email'); function isEmailValid(value) { return EMAIL_REGEXP.test(value); } let btn = document.getElementById('wp-submit'); btn.setAttribute('disabled', true); function onInput() { if (isEmailValid(input.value)) { input.style.borderColor = 'green'; btn.removeAttribute('disabled'); } else { input.style.borderColor = 'red'; btn.setAttribute('disabled', true); } } input.addEventListener('input', onInput);
Если вкратце, пока Email не будет введен правильно, кнопка регистрация будет не активна к ней добавлен disabled так же поле Email горит borderColor red
let btn = document.getElementById('wp-submit'); btn.setAttribute('disabled', true);
Однако хотелось бы сделать, чтобы при клике на кнопку wp-submit, выводилось сообщение "Email введен не корректно"
В данном случаи .on('click') не работает из-за добавленного к кнопке disabled
Как сделать чтобы при не правильно введенном Email и клике по кнопке выводилось сообщение не понятно.
Делать такую валидацию желательно на стороне сервера. disabled атрибут можно снять легко...
Что касается твоего вопроса, вместо onclick
просто используй событие mouseup
.
Соглашусь, надеяться на валидацию на стороне клиента категорически неприемлимо.
Делайте на стороне сервера например, на аяксе.
А в вордпрессе есть встроенная функция для этого https://wp-kama.ru/function/is_email
Как настроить защиту на стороне сервера разобраться не удалось. Этой защиты должно хватить, главная задача ограничить количество регистраций пользователей, которые криво вводят свой эмайл.
В итоге сейчас пошел немного другим путем теперь если водят криво свой эмайл то выходит вот такая защита
if($_POST['wp-submit-prov']){ if ($_POST['prov2'] != 'yesemail') exit('Сработала защита email.'); }
Можно как-то доработать это, чтобы выводилось простое сообщение с ошибкой, наподобие того что выводится, при не правильном вводе логина или пароля. Тоесть чтобы выводилось как стандартное сообщение от ВП.
поддерживаю предыдущих ораторов по валидации.
Чтобы проинформировать пользователя на кнопке, можно добавить атрибут title к заблокированной кнопке, и снять его, когда кнопка разблокирована.