Мне нужно чтобы когда фокус исчезает из поля email то должна выполняться проверка на правильность, но у меня постоянно показывает, что email неверный, где ошибка подскажите пожалуйста.
<form id="form_id" method="post" action="" onsubmit="javascript:return validate('form_id','email');">
<input type="text" id="email" name="email" />
<input type="submit" value="Submit" />
</form>
<script>
email.onblur = function(){
var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
var address = document.getElementById("email");
if(reg.test(address) === false) {
alert('Введите корректный e-mail');
return false;
}
};
email.onfocus = function() {
document.getElementById('email').value = '';
};
</script>
document.getElementById("email")
возваращает целый элемент. Вам нужен только текст, доступ к которому можно получить через свойство value
:
email.onblur = function(){
var reg = /^[A-Za-z0-9_.-]+@[A-Za-z0-9_.-]+\.[A-Za-z]{2,4}$/;
var address = document.getElementById("email").value;
console.log(address);
if(!reg.test(address)) {
alert('Введите корректный e-mail');
return false;
}
};
email.onfocus = function() {
document.getElementById('email').value = '';
};
<form id="form_id" method="post" action="" onsubmit="javascript:return validate('form_id','email');">
<input type="text" id="email" name="email" />
<input type="submit" value="Submit" />
</form>
Предлагаю также заменит ([A-Za-z0-9_\-\.])+
на [A-Za-z0-9_.-]+
, чтобы движок регулярных выражений не перезаписывал каждый найденный символ в буфере первой захватывающей группы (которую следует просто удалить, также как и вторую, так как они не используются далее в коде).
Кстати, если вы хотите использовать регулярное выражение, которое следует логике type="email"
, замените своё выражение следующим
/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
См. документацию по HTML5
Для адреса электронной почты лучше использовать [type=email]
, регулярное выражение для проверки задавать через атрибут pattern
, проверять валидность после потери фокуса событием change
.
var mailInput = document.querySelector('[type=email]');
mailInput.addEventListener('change',function(){
if(this.validity.valid){
console.log('Валидно')
}else{
console.log('Невалидно')
}
});
<input type="email" pattern="^[A-Za-z0-9_.-]+@[A-Za-z0-9_.-]+\.[A-Za-z]{2,4}$" />
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Получаю ответ ajax'ом от сервера в формате json такого вида: {"success":true,"data":{"answer":"first line\r\nsecond line boom\r\n123","answer_id":433}}
Нужно получить данные из бд и переписать их на переменные напримерНе работает запрос query2
я пытаюсь написать библиотеку которая будет заниматься отправкой сообщение на emailМне необходимо сделать парсинг Razor страниц, я наше библиотеки...
Пишу array-like класс, так что хотелось бы, чтобы процесс инициализации экземпляра моего класса был максимально приближен к привычной инициализации...