Как убрать обновление страницы?
При клике на кнопку и когда у меня введен не верный email, то происходит обновление страницы, но этого не должно быть. Что тут не так?
jQuery( document ).ready(function() {
jQuery(".rcl-bttn").on("click", validate);
// Validate email
function validateEmail(email) {
var re = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
return re.test(email);
}
// send form
function sendForm() {
jQuery(".error").text("Form sending").fadeIn();
}
// validate email and send form after success validation
function validate() {
var email = jQuery("#email-user").val();
var $error = jQuery(".error");
$error.text("");
if (!validateEmail(email)) {
//rcl_submit_form(this);return false;
this.preventDefault();
$error.text(email + " неправильная почта");
return false;
}
rcl_submit_form(this);
}
});
Ответы (1 шт):
Автор решения: rusgeli
→ Ссылка
preventDefault() - метод не элемента, а события (Подробнее). Вам необходимо получить в функции validate() переменную события, и уже у нее вызвать метод preventDefault(): function validate(e) { ... e.preventDefault(); ... }
jQuery( document ).ready(function() {
jQuery(".rcl-bttn").on("click", validate);
// Validate email
function validateEmail(email) {
var re = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
return re.test(email);
}
// send form
function sendForm() {
jQuery(".error").text("Form sending").fadeIn();
}
// validate email and send form after success validation
function validate(e) { // e - переменная события, получаем ее здесь
var email = jQuery("#email-user").val();
var $error = jQuery(".error");
$error.text("");
if (!validateEmail(email)) {
//rcl_submit_form(this);return false;
e.preventDefault(); // e - переменная события, у нее есть метод preventDefault. У элемента его нет
$error.text(email + " неправильная почта");
return false;
}
rcl_submit_form(this);
}
});
Но лучше всего метод preventDefault вызывать в самом начале функции:
function validate(e) {
e.preventDefault();
...
}