JavaScript if语句忽略条件
我有一个JavaScript代码来验证我的联系人表单并执行POST到PHP脚本,问题是脚本会忽略IF语句并在validateForm函数的响应为false时执行POST 如果validateForm()返回false,它仍在执行POST操作 这是一个控制台的打印,带有函数的结果 我的JS代码:JavaScript if语句忽略条件,javascript,jquery,ajax,if-statement,materialize,Javascript,Jquery,Ajax,If Statement,Materialize,我有一个JavaScript代码来验证我的联系人表单并执行POST到PHP脚本,问题是脚本会忽略IF语句并在validateForm函数的响应为false时执行POST 如果validateForm()返回false,它仍在执行POST操作 这是一个控制台的打印,带有函数的结果 我的JS代码: $(document).ready(function() { $("form[name='contactf']").submit(function(e) {
$(document).ready(function() {
$("form[name='contactf']").submit(function(e) {
// do the extra stuff here
e.preventDefault();
console.log(validateForm());
if(validateForm()){
$.ajax({
type: "POST",
url: "mail.php",
data: $(this).serialize(),
success: function(data) {
if(data.message == 'success'){
M.toast({html: 'Mensagem enviada com sucesso!'})
$('#first_name').val('');
$('#last_name').val('');
$('#subject').val('');
$('#email').val('');
$('#phone').val('');
$('#details').val('');
}else if(data.message == 'error'){
M.toast({html: 'Ops... Tente novamente dentro de alguns minutos.'})
}
}
})
}
else
;
})
function validateForm()
{
var name=document.forms["contactf"]["first_name"].value;
var surname=document.forms["contactf"]["last_name"].value;
var subject=document.forms["contactf"]["subject"].value;
var mail=document.forms["contactf"]["email"].value;
var phone=document.forms["contactf"]["phone"].value;
var details=document.forms["contactf"]["details"].value;
var isnum = /^\d+$/.test(phone);
if(!isnum){
M.toast({html: 'O telefone deve conter apenas números!'});
return false;
}
else if (!name || !surname || !subject || !mail || !phone || !details)
{
M.toast({html: 'Preencha todos os campos!'})
return false;
}
else
return true;
}
function id( el ){
return document.getElementById( el );
}
})
你的布尔逻辑是错误的 相反,您可以使用
!值
如果值
为null或空字符串,则生成真
,然后使用|
将它们全部生成
这是基于将类型强制转换为布尔值,有关详细信息,请参见例如
例如:
函数验证表单(v1、v2、v3){
var name=v1;
var姓氏=v2;
var主体=v3;
如果(!姓名| | |!姓氏| |!主语)
返回false;
其他的
返回true;
}
log(validateForm(null,null,null));
log(validateForm(null,,“Test”);
log(validateForm(“John”、“Smith”、“Test”)代码>您的布尔逻辑错误
相反,您可以使用!值
如果值
为null或空字符串,则生成真
,然后使用|
将它们全部生成
这是基于将类型强制转换为布尔值,有关详细信息,请参见例如
例如:
函数验证表单(v1、v2、v3){
var name=v1;
var姓氏=v2;
var主体=v3;
如果(!姓名| | |!姓氏| |!主语)
返回false;
其他的
返回true;
}
log(validateForm(null,null,null));
log(validateForm(null,,“Test”);
log(validateForm(“John”、“Smith”、“Test”)代码>如果
条件,则需要更改否则。
写出如下条件:
else if (name==null || name=="" || surname==null || surname=="" || subject==null || subject=="" || mail==null || mail=="" || phone==null || phone=="" || details==null || details=="")
不要使用逗号(,)分隔。您需要更改否则,如果条件。
写出如下条件:
else if (name==null || name=="" || surname==null || surname=="" || subject==null || subject=="" || mail==null || mail=="" || phone==null || phone=="" || details==null || details=="")
不要使用逗号(,)进行分隔。您可以完全确定validateForm函数没有返回true吗?您调试过它吗?如果你一步一步地完成这个函数,它应该相当清楚发生了什么。如上所述,如果您的IF逻辑看起来很奇怪…等等-如果validateForm()
中的else是错误的。您已经用逗号分隔了表达式,我怀疑这是您真正想要的。逗号不会像你想的那样。我以前从未见过这种语法(使用逗号):if(name==null | | name==“”,姓氏==null | |…
逗号运算符,
可能是另一个逻辑运算符或|
,否则您只需测试详细信息
是否可以完全确定validateForm函数没有返回true?是否调试过它?如果您单步执行该函数,则应该非常清楚发生了什么。如sai所示d上面的IF逻辑看起来很奇怪…等等-那validateForm()
中的else IF是错误的。你用逗号分隔了表达式,我怀疑这是你真正想要的。逗号不会像你想的那样。我以前从未见过这种语法(使用逗号):IF(name==null | | name==“”,姓氏==null | |…
逗号运算符,
可能是另一个逻辑运算符或|
,否则您只需测试详细信息
为什么这可能有效,Peter B.的解决方案要优雅得多检查此[尝试删除名称值]我同意Peter B.的方法。我想说的是,Murilo Pereira可以通过删除条件中的(,)使他的代码工作。@DelowarHossain感谢JSFIDLE,代码工作了,我已经做了更改,但没有成功,这可能是Ajax错误?如果(validateForm())之后有一个空的else,尝试修复它。这可能会有帮助。为什么这可能会起作用,Peter B.的解决方案要优雅得多检查这个[尝试删除名称值],我同意Peter B.的方法。我想说的是,Murilo Pereira可以通过删除这些(,)使他的代码起作用内部条件。@DelowarHossain感谢JSFIDLE,代码在那里工作,我做了更改,但没有成功,这可能是Ajax错误?如果(validateForm())之后有一个空的else,请尝试修复它。这可能会有帮助。