Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript上的IF/ELSE工作异常_Javascript_Jquery_Regex_Html_Forms - Fatal编程技术网

Javascript上的IF/ELSE工作异常

Javascript上的IF/ELSE工作异常,javascript,jquery,regex,html,forms,Javascript,Jquery,Regex,Html,Forms,我有一个表单,在那里我要求一封我验证正则表达式的电子邮件,如果电子邮件是正确的,我做一个提交,如果不是,我发送一个警报 当我发送一封无效的电子邮件时,会显示警报,但如果我发送一封有效的电子邮件,则会显示警报,然后提交()完成,我甚至不知道这是怎么可能的!这是我的密码 $('#sinCopago').on('click', function(event){ if($('#nombreContratante').val() != "" && $('#motivo').val(

我有一个表单,在那里我要求一封我验证正则表达式的电子邮件,如果电子邮件是正确的,我做一个提交,如果不是,我发送一个警报

当我发送一封无效的电子邮件时,会显示警报,但如果我发送一封有效的电子邮件,则会显示警报,然后提交()完成,我甚至不知道这是怎么可能的!这是我的密码

$('#sinCopago').on('click', function(event){
    if($('#nombreContratante').val() != "" && $('#motivo').val() != ""){
        if($('#fechaNac').val() > hoy){
            alert("Ingresa una fecha de nacimiento válida.");
        }else{
            if(validarMail($("#correo")) == true){
                event.preventDefault();
                $('#progressBarSisnova').modal({show:true});
                $('#payment-form-Sisnova').submit();
            }
            else{
                alert("Ingresa un correo válido");
            }
        }
    }
    else{
        alert("Por favor llene todos los campos");
    }
});

function validarMail(email){
    var caract = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;

    if(caract.test(email) == false){
        return false;
    }
    else{
        return true;
    }
}

您当前正在将
$(“#correo”)
jQuery对象传递到
validarMail

if(validarMail($("#correo")) == true){
然后继续测试该对象:

当然,这是行不通的,因为您没有测试字符串。尝试传递
#correo
.val()
。因此,最终的
.test(
是用值字符串而不是jQuery对象调用的:

if(validarMail($("#correo").val()) == true){
请随意删除
==true
部分,
validarMail
已返回布尔值:

if(validarMail($("#correo").val())){
当测试失败时,而不是当测试成功时,您也应该
preventDefault
,这样,只有当测试成功时,表单才会正常提交,不会中断。如果
在出现错误时返回
,代码可能会更平坦,更易于阅读:

$('#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')。在('click',函数(事件){
如果($('nombrecontatante').val()==“”('motivo').val()==“”){
event.preventDefault();
返回警报(“欢迎Lelene todos los campos”);
}

如果($(“#fechaNac').val()您当前正在将
$(“#correo”)
jQuery对象传递给
validarMail

if(validarMail($("#correo")) == true){
然后继续测试该对象:

当然,这不起作用,因为您没有测试字符串。请尝试传递
#correo
.val()
。这样,最终的
.test(
将使用值字符串而不是jQuery对象调用:

if(validarMail($("#correo").val()) == true){
请随意删除
==true
部分,
validarMail
已返回布尔值:

if(validarMail($("#correo").val())){
当测试失败时,而不是当测试成功时,您也应该
preventDefault
,这样,只有当测试成功时,表单才会正常提交,不会中断。如果
在出现错误时返回
,代码可能会更平坦,更易于阅读:

$('#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')。在('click',函数(事件){
如果($('nombrecontatante').val()==“”('motivo').val()==“”){
event.preventDefault();
返回警报(“欢迎Lelene todos los campos”);
}

如果($('#fechaNac').val()您应该传递函数
validarMail()
的字段值,那么替换当前的cod

if(validarMail($("#correo")) == true)
为了

你可以提高你的功能

function validarMail(email){
    var caract = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
    return caract.test(email)    
}

您应该为函数
validarMail()
传递字段值,因此替换当前的cod

if(validarMail($("#correo")) == true)
为了

你可以提高你的功能

function validarMail(email){
    var caract = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
    return caract.test(email)    
}

处理单击不会阻止表单提交,除非a)将
事件.preventDefault();
添加到函数或b)从中返回false。Offtopic,但是伙计,尝试保持一个模式。在某些地方,您的
else
与if的结束括号位于同一行,而在其他地方,您会断行。这会使您的代码难以读取。您的正则表达式限制太多。请参阅。我个人更喜欢检查
@
,然后是DNS请求t表示指定域中的MX记录。如果两者都通过,我假定地址是正确的。处理单击不会阻止表单提交,除非您a)向函数添加
事件.preventDefault();
,或b)从中返回false。Offtopic,但是伙计,尝试保持一个模式。在某些地方,您的
else
与if的结束括号位于同一行,而在其他地方,您会断行。这会使您的代码难以读取。您的正则表达式限制太多。请参阅。我个人更喜欢检查
@
,然后是DNS请求指定域中的MX记录的t。如果这两个都通过了,我假设地址是好的。所以我想我们可以以打字错误关闭它?所以我想我们可以以打字错误关闭它?