В настоящее время вы передаете объект $("#correo")
jQuery validarMail
:
if(validarMail($("#correo")) == true){
и приступаете к проверке этого объекта :
if(caract.test(email) == false){
Конечно, это не сработает, потому что вы не тестируете строку.Попробуйте вместо этого передать .val()
из #correo
.так что возможный .test(
вызывается со строкой значения , а не объектом jQuery:
if(validarMail($("#correo").val()) == true){
Не стесняйтесь удалять часть == true
, validarMail
уже возвращаетboolean:
if(validarMail($("#correo").val())){
Вы также должны preventDefault
, когда тест не пройден , а не когда тест пройден успешно - таким образом, форма будет отправлена как обычно без прерывания только тогда, когда тестпреуспевает.Код также, вероятно, будет более лёгким и легким для чтения, если вы return
обнаружите ошибку:
$('#sinCopago').on('click', function(event){
if($('#nombreContratante').val() === "" || $('#motivo').val() === "") {
event.preventDefault();
return alert("Por favor llene todos los campos");
}
if($('#fechaNac').val() <= hoy){
event.preventDefault();
return alert("Ingresa una fecha de nacimiento válida.");
}
if(!validarMail($("#correo").val())){
event.preventDefault();
return alert("Ingresa un correo válido");
}
$('#progressBarSisnova').modal({show:true});
$('#payment-form-Sisnova').submit();
});
Если при нажатии #sinCopago
форма будет отправлена без preventDefault
, то в окончательной версии нет необходимости.линия там $('#payment-form-Sisnova').submit();
.(В противном случае может вообще не потребоваться preventDefault
, если действие по умолчанию для события не вызывает отправку формы или другое нежелательное поведение)