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。如果这两个都通过了,我假设地址是好的。所以我想我们可以以打字错误关闭它?所以我想我们可以以打字错误关闭它?