Javascript 在表单验证中以错误顺序生成警报

Javascript 在表单验证中以错误顺序生成警报,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我有一个HTML表单,我使用两个JS函数进行验证:emptyValues()和checkReg(),它们位于单独的JS文件中。第一个函数工作得很好,但第二个函数有问题 在表单提交时,它会检查每个字段,并在有错误时发出警报。我希望函数先检查登录可用性,然后再继续检查密码是否相等以及电子邮件是否正确。但该函数仅在出现其他错误时显示登录警报,并且仅在其他警报之后显示。似乎当密码和电子邮件都正常时,它就不会检查登录(或者没有时间给出答案)。怎么可能呢 这是我的密码: HTML表单 <form id

我有一个HTML表单,我使用两个JS函数进行验证:
emptyValues()
checkReg()
,它们位于单独的JS文件中。第一个函数工作得很好,但第二个函数有问题

在表单提交时,它会检查每个字段,并在有错误时发出警报。我希望函数先检查登录可用性,然后再继续检查密码是否相等以及电子邮件是否正确。但该函数仅在出现其他错误时显示登录警报,并且仅在其他警报之后显示。似乎当密码和电子邮件都正常时,它就不会检查登录(或者没有时间给出答案)。怎么可能呢

这是我的密码:

HTML表单

<form id="signup_form" action="" method="post" onsubmit="return (emptyValues(this,\'signup_form\') && checkReg(this));">
    <input id="login" name="login" type="text" placeholder="Login" />
    <input id="password" name="password" type="password" placeholder="Password" />
    <input id="password2" name="password2" type="password" placeholder="Repeat password" />
    <input id="email" name="email" type="text" placeholder="E-mail" />
    <input class="button" id="signup" name="signup" type="submit" value="Sign up" />
    <input name="who" type="hidden" value="'.$who.'" />
</form>
PHP文件,该文件使用用于检查登录可用性的AJAX函数进行响应

<?php
    require_once('../p4gw78/kx96hf_localhost');

    mysql_connect('localhost', $uzytk23, $pvd32);  
    mysql_select_db($baza);  

    $login = $_POST['login'];

    $result = mysql_query("SELECT * FROM `f_users` WHERE `u_login` = '$login'");  

    if(mysql_num_rows($result) > 0) {   
        echo 0;  
    }
    else {  
        echo 1;  
    }  
?>

请不要在生产环境中使用该PHP代码!SQL注入很容易用它来执行。请使用mysqli或PDO而不是mysql。提示:
$.post()
(和其他Ajax函数)是异步的。(另外,我不认为电子邮件验证正则表达式正在做你可能希望它做的事情-除非“abc@@@test.com”应该是有效的…
$。post
$的缩写。ajax
是执行异步HTTP(ajax)请求的
。因此,它启动您的
$.post
,并在等待返回时运行其余的检查。如果希望它等待,则在
$之后执行回调。post
成功。另一种选择是做
$.ajax(){async:false,
谢谢!我非常感谢你的帮助。很高兴与他人分享,你学到了很多东西!@Sean感谢你的详细解释,你的建议奏效了(我使用了
async:false
)@nnnnn感谢您提到电子邮件验证正则表达式,到目前为止我还不知道它是错的。@从现在开始重生我将使用mysqli,谢谢!
<?php
    require_once('../p4gw78/kx96hf_localhost');

    mysql_connect('localhost', $uzytk23, $pvd32);  
    mysql_select_db($baza);  

    $login = $_POST['login'];

    $result = mysql_query("SELECT * FROM `f_users` WHERE `u_login` = '$login'");  

    if(mysql_num_rows($result) > 0) {   
        echo 0;  
    }
    else {  
        echo 1;  
    }  
?>