0

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

我通过将值发布到 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() 的信息,尝试了它们,但无法让它按需要工作。

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

干杯。

4

1 回答 1

0

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

于 2013-09-16T02:09:13.143 回答