【问题标题】:execute if statement after all functions complete在所有功能完成后执行 if 语句
【发布时间】:2013-09-16 02:04:52
【问题描述】:

我一直在寻找最好的方法来做到这一点,但无法给出明确的答案

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

我有以下基本代码

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() 的信息,尝试了它们,但无法让它按需要工作。

我做错了什么?必须有一种简单的方法来实现我正在尝试做的事情,但我不知道它是什么:) 我过去在与动画不对齐时使用过队列和回调,但这些似乎并不适用这里也一样。

干杯。

【问题讨论】:

标签: jquery callback queue


【解决方案1】:

您是否考虑过仅使用 HTML 属性 required="required" 或 simple 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 函数来进一步验证电子邮件地址。

【讨论】:

  • 他将不得不学习如何编写适当的异步 JavaScript。如果你有“讨厌的错误 JavaScript”,你应该努力修复它,而不是避免写它......
  • 是的,我同意,但在每个程序员的生活中,他们都会意识到,当铺平道路的新想法正在消除它时,你真的不必做所有这些额外的事情。 AJAX 很棒,但它真的是我认为注册表格最合适的选择吗?
  • 谢谢大家,但重点是我需要检查电子邮件是否已经存在于数据库中。所以我需要在某个时候使用 php/ajax 来检查数据库。我已经在.blur 上执行了这些检查,但这是提交前的最后检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
相关资源
最近更新 更多