在所有功能完成后执行if语句

时间:2013-09-16 02:04:53

标签: jquery callback queue

我一直在寻找并寻找最好的方法来做到这一点并且无法找到明确的答案

我通过将值发布到php脚本来验证表单,该脚本检查它们是否已存在于数据库中。我有几个需要验证的字段,其中一个是beign email。

我有以下基本代码

jQuery(document).ready(function(){

    jQuery("#signup_submit").click(function(){

        var u_email = jQuery('#signup_email').val();
        var email_check = 0;
        var email_checked = "no";


        if (jQuery('#signup_email').val()) {

            jQuery.post("/check-username-email",{ user_email:jQuery('#signup_email').val() } ,function(data){

            //if email not avaiable
              if(data == 0) {
                email_checked = "yes";
                 email_check = 0;
                 alert(email_check + " 1");
              }
              //if email is not vaild
              else if(data == 2){
                email_checked = "yes";
                email_check = 0;
                alert(email_check+ " 2");
              }else{
                email_checked = "yes";
                email_check = 1;
                alert(email_check + " 3");
              }

            });

        }else{
            email_checked = "yes";
            email_check = 0;
            alert(email_check + " 4");
        }
// IN NEED THIS NEXT BIT TOW WAIT UNTIL THE PREVIOUS SECTION HAS FINISHED BEFORE EXECUTING

    if (email_checked=="yes"){
            if (email_check==1){
                alert("ok");
            }else{
                alert("notok");
            }
        }else{
            alert("email not checked");
        }


        //jQuery("#signup_form_standalone").submit()    

    });

});

我的问题是底层的if语句是在第一个函数验证之前执行的。

我已经阅读了有关jQuery.when和callbacks()的信息,试过它们并且无法根据需要使其工作。

我做错了什么?必须有一种简单的方法来实现我的尝试,但我不知道它是什么:)我曾经使用过排队和回调来处理动画,但这些似乎并不适用于在这里也一样。

干杯。

1 个答案:

答案 0 :(得分:0)

您是否考虑过只使用HTML属性required =“required”或简单处理此问题。当然,您也可以通过定义模式和消息来进一步确保这一点。它在大多数浏览器中运行得非常好,并且值得一试,以避免一堆讨厌和错误的JavaScript有时。只要确保你的PHP服务器端确保代码是完美的,客户端是客户端业务会发生什么。

例如,我喜欢注册时的电子邮件输入。

<label title="Must be a valid email address for account activation. It will remain private and will not be revealed to other users." for="email">Email:</label>
<input required="required" pattern="^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$" type="text" id="email" name="email" value="" placeholder="Email Address">

这将回击绝大多数问题,并提醒用户他们错过了某些内容或者可能拼写错误的内容。然后只需使用您最喜欢的PHP函数来进一步验证电子邮件地址。