Javascript Ajax回调未执行

Javascript Ajax回调未执行,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个表单页面,我打算使用Ajax提交。我的计划是 1.使用Ajax检查电子邮件是否已经存在 2.检查密码是否匹配 3.如果有,切换到另一个“屏幕”并 4.使用Ajax提交表单 我很困惑,因为validate函数没有运行。当密码不匹配时,它既不会切换屏幕也不会发出警报。因此,表单也不会被提交。我的代码如下 $('form input:last-child').click(function(e){ e.preventDefault(); var allFields = e.tar

我有一个表单页面,我打算使用Ajax提交。我的计划是 1.使用Ajax检查电子邮件是否已经存在 2.检查密码是否匹配 3.如果有,切换到另一个“屏幕”并 4.使用Ajax提交表单

我很困惑,因为validate函数没有运行。当密码不匹配时,它既不会切换屏幕也不会发出警报。因此,表单也不会被提交。我的代码如下

$('form input:last-child').click(function(e){
    e.preventDefault();
    var allFields = e.target.parentNode;

    function validate () {
        if (allFields.elements[3].value !== allFields.elements[4].value) {
            return false; // If they don't match, return false
        } else {
            $('#form-div form').css('left', '-70%');
            $('#confirm p').css('margin-left', '-12%'); // else switch screens
        }
    }
    if (validate != false) {
        $('#hidden').load("server_script.php"); // `hidden` is a hidden div somewhere on the page
    } else 
        alert ("Passwords do not match");
});
我在想,如果它们不匹配,那么事件侦听器的其余部分将不会运行,因为false将从此点终止函数。因此,我尝试在事件侦听器外部创建一个validate函数的实例,并在click函数内部调用它,但由于依赖性变量的原因,它无法解析,因此我不确定如何执行此操作

更新 相关的HTML附加。(奖励:正则表达式模式不匹配2个或更多字母)


名字:


姓氏:


电子邮件:


密码:


确认密码:


一些文字


未调用
验证
函数。为什么不简单地删除函数定义,使代码成为
click
函数的一部分?

您忘记调用“validate”函数了。
正如代码所示,您只是声明了函数而没有执行它。

您没有正确地调用验证函数

函数调用必须具有
()
,即
validate()
而不是
validate

$('form input:last-child').click(function(e){
    e.preventDefault();
    var allFields = e.target.parentNode;

    function validate () {
        if (allFields.elements[3].value !== allFields.elements[4].value) {
            return false; // If they don't match, return false
        } else {
            $('#form-div form').css('left', '-70%');
            $('#confirm p').css('margin-left', '-12%'); // else switch screens
        }
    }

    //if (validate != false) {
    if (validate() != false) {  
        $('#hidden').load("server_script.php"); // `hidden` is a hidden div somewhere on the page
    } else 
        alert ("Passwords do not match");
});

没有关联的HTML,很难有任何帮助什么是
validate!=false
?@RiggsFolly添加了html@u_mulder我试图检查validate函数的输出是否没有返回false。如果是这种情况,则在代码下方运行代码缩进使代码更易于阅读,但在调试方面帮助更大如果我打开它,那么如何测试不相似的密码?您可以将其作为独立函数移出
单击
函数,并将值作为参数传递给比较:
函数验证(pass1,pass2)
事实上,如果你看得近一点,他认为他在调用它。我添加了括号,但脚本没有以任何方式加载。原始的
验证
没有运行的原因是,我没有在单独的行中调用它。请检查已接受的答案这将调用
验证()
函数假设整个js代码段都被调用。你是说整个代码段都没有被调用吗??
$('form input:last-child').click(function(e){
    e.preventDefault();
    var allFields = e.target.parentNode;

    function validate () {
        if (allFields.elements[3].value !== allFields.elements[4].value) {
            return false; // If they don't match, return false
        } else {
            $('#form-div form').css('left', '-70%');
            $('#confirm p').css('margin-left', '-12%'); // else switch screens
        }
    }

    //if (validate != false) {
    if (validate() != false) {  
        $('#hidden').load("server_script.php"); // `hidden` is a hidden div somewhere on the page
    } else 
        alert ("Passwords do not match");
});