Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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语句忽略条件_Javascript_Jquery_Ajax_If Statement_Materialize - Fatal编程技术网

JavaScript if语句忽略条件

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) {

我有一个JavaScript代码来验证我的联系人表单并执行POST到PHP脚本,问题是脚本会忽略IF语句并在validateForm函数的响应为false时执行POST

如果validateForm()返回false,它仍在执行POST操作

这是一个控制台的打印,带有函数的结果

我的JS代码:

    $(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,请尝试修复它。这可能会有帮助。