Валидация Email на Javascript

Задача:

Есть текстовое поле, куда пользователь должен вводить E-mail.

- Если поле проходит валидацию — оно должно иметь зеленую подсветку;

- Если нет — красную.


Первым делом добавляем input в HTML. Здесь все просто:

<input type="email" placeholder="E-mail">

Для простоты восприятия предположим, что больше на странице ничего нет, поэтому не станем добавлять лишние атрибуты.


Так как подсветка должна меняться в реальном времени добавим «слушатель» на input:

const INPUT = document.querySelector('input');
INPUT.addEventListener('input', updateInput);

Функция updateInput будет менять цвет css-свойства border на зеленый, если введенный в input текст валиден, или на красный — если нет.


const INPUT = document.querySelector('input');
function updateInput() {
if (validateEmail(INPUT.value)) INPUT.style.borderColor = 'green';
else INPUT.style.borderColor = 'red';
}

INPUT.addEventListener('input', updateInput);

Функция validateEmail будет сравнивать введенное пользователем значение с регулярным выражением. В успешном случае функция вернет true, иначе — false.

const EMAIL_REGEXP = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/iu;
const INPUT = document.querySelector('input');
function validateEmail(value) {
return EMAIL_REGEXP.test(value);
}

function updateInput() {
if (validateEmail(INPUT.value)) INPUT.style.borderColor = 'green';
else INPUT.style.borderColor = 'red';
}
INPUT.addEventListener('input', updateInput);

Вот и все! Скрипт готов. Его работу вы можете проверить в моем Codepen.

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий

Что за адский regex. Проще же можно было.

Советую вам vue.js. И стили менять при помощи css а не js.

раскрыть ветку (11)
0
DELETED
Автор поста оценил этот комментарий

Я попытался описать простейший способ валидации без фреймворков, библиотек и прочего.
Стили навесил через js только для того чтобы сократить пример.
А так да, вы правы - лучше это делать через css.

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

+ EMAIL_REGEXP стрёмный... нафига все эти выебоны. есть @ - значит почта верная... откуда ты знаешь какие завтра введут правила в именах доменов и поддоменов. те-же {2,} завтра может станет {1,} доменное имя vsempohu.y например )

раскрыть ветку (2)
0
DELETED
Автор поста оценил этот комментарий

Маловероятно, но в таком случае во всем коде нужно будет только регулярку подправить.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

одну, но ... на сотне сайтов

0
Автор поста оценил этот комментарий
Как ксс увидит ошибочный ввод?
раскрыть ветку (6)
1
Автор поста оценил этот комментарий

Vue для мапинга, css для стиля.

раскрыть ветку (3)
0
Автор поста оценил этот комментарий
А если чисто гипотетически забыть что есть вью, такой джс код терпим, или не оч?
раскрыть ветку (2)
2
Автор поста оценил этот комментарий

Для проверки того насколько терпим код нужно задать вопрос о том насколько он расширяем.


Допустим, если нам нужно будет сделать еще и проверку номера телефона, то что из этого кода мы сможем использовать? А если мы решим изменять кроме границы еще и фон, то сколько строк кода это затронет? А как код будет работать, если у нас несколько полей с email нужно проверить?

0
Автор поста оценил этот комментарий

Честно, не вникал особо. Обычно как истинный бэкендер, если надо во фронте что сделать, то просто использую vue и jquerry.

0
Автор поста оценил этот комментарий
Возможно, имеется в виду добавление и удаление классов ошибки и успешного заполнения. Ну а на классах стили.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Именно.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества