Валидация 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 и клике по кнопке выводилось сообщение не понятно.

Заметки к вопросу:
Kama 2.5 лет назад

Делать такую валидацию желательно на стороне сервера. disabled атрибут можно снять легко...

Что касается твоего вопроса, вместо onclick просто используй событие mouseup.

el-lable 2.5 лет назад

Соглашусь, надеяться на валидацию на стороне клиента категорически неприемлимо.
Делайте на стороне сервера например, на аяксе.
А в вордпрессе есть встроенная функция для этого https://wp-kama.ru/function/is_email

lethalblo 2.4 года назад

Как настроить защиту на стороне сервера разобраться не удалось. Этой защиты должно хватить, главная задача ограничить количество регистраций пользователей, которые криво вводят свой эмайл.

В итоге сейчас пошел немного другим путем теперь если водят криво свой эмайл то выходит вот такая защита

if($_POST['wp-submit-prov']){
if ($_POST['prov2'] != 'yesemail')
	exit('Сработала защита email.');

}

Можно как-то доработать это, чтобы выводилось простое сообщение с ошибкой, наподобие того что выводится, при не правильном вводе логина или пароля. Тоесть чтобы выводилось как стандартное сообщение от ВП.

0
lethalblo
2.5 лет назад 53
  • 0
    Andrew 556

    поддерживаю предыдущих ораторов по валидации.

    Чтобы проинформировать пользователя на кнопке, можно добавить атрибут title к заблокированной кнопке, и снять его, когда кнопка разблокирована.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация