Я выполняю проверку для ввода электронной почты
$("#email").on("input",function()
{
email = $(this).val();
const regex_1 = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
const regex_2 = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,10})+$/;
var re1 = new RegExp(regex_1);
var re2 = new RegExp(regex_2);
if(re1.test(email)===true && re2.test(email)===true)
{
e.preventDefault();
$.ajax({
url:"Validate.php",
method:"POST",
data:'type=check_email&email='+email,
success:function(data)
{
if(data == 'FAIL')
{
$("#email").addClass("is-invalid");
$("#email").removeClass("is-valid");
$("#email").focus();
}
else
{
$("#email").addClass("is-valid");
$("#email").removeClass("is-invalid");
}
}
});
}
else
{
$("#email").addClass("is-invalid");
$("#email").removeClass("is-valid");
$("#email").focus();
}
$("#email").removeClass("is-invalid");
$("#email").removeClass("is-valid");
});
Так что моя проблема в том, что когда проверка через RegEx проходит, AJAX-вызов выполняется дважды, тогда как результат первого success: function(данные) само возвращает УСПЕХ .
Два последовательных запроса для одного и того же экземпляра увеличат нагрузку на сервер без необходимости.
Лично я считаю, что моя привязка неверна или я не использовал e.preventDefault ();
Но я попытался использовать ключ изменения фокуса ввода (индивидуально, а также несколько привязок), но ничего не получалось, запрос по-прежнему выполняется дважды.
Суть в том, что только когдаТест RegEx возвращает true , тогда для запуска требуется только ajax (только один раз).Почему он работает здесь дважды?
Обязательно: электронная почта (строка) должна пройти оба теста RegEx