表单提交前的用户名检查 - JQUERY / AJAX

时间:2011-12-30 16:28:45

标签: jquery ajax forms

我一直在使用这个例子:http://youhack.me/2010/05/04/username-availability-check-in-registration-form-using-jqueryphp/来创建一个表单(在添加到数据库之前将用户带到确认页面 - 之后的简单部分)..但是我希望它检查用户名是否可用是否在提交表格之前。我不能为我的生活弄清楚我做错了什么:P

我的jquery / AJAX如下:(它调用的PHP文件工作正常,我没有必要把它放在这里)

$(document).ready(function()
    {
        $(".form").submit(function()
        { 
            var username = $(".userID").val();

            $.ajax({  
                type: "POST",
                url: "id_check.php",  
                data: "userID="+ username,  
                success: function(response){

                    if(response=="NO"){
                        alert("no");    
                    }
                    else if(response=="YES"){   
                        alert("yes");
                    }
                }

            });

            return false; //if i take this line out it submits either way

        });

    });

我知道php的工作原理是因为在使用或不使用用户名时会弹出正确的警告,但是当响应为YES时我无法提交表单而没有在响应也为NO时提交。我已尝试过很多不同的东西(包括$(form).submit()和IF语句中的各种返回等),但无济于事。

我基本上需要它提交时不采取名称,并在不提交时...任何帮助非常感谢!! (我想我已经包含了所有必要的信息来解决它哈哈)

艾伦

2 个答案:

答案 0 :(得分:0)

你有没有尝试过(看看评论):

    $(".form").submit(function(e)
    { 
        var username = $(".userID").val();
        //cache the current form 
        var form = this;
        //check if the event is started by the user or by your success function
        //if it's triggered by the user, check for the username
        if (e.originalEvent !== undefined){
          $.ajax({  
            type: "POST",
            url: "id_check.php",  
            data: "userID="+ username,  
            success: function(response){

                if(response=="NO"){
                    alert("no");    
                }
                else if(response=="YES"){   
                    //submit the form you have cached
                    $(form).submit();
                    alert("yes");
                }
            }

          });

        //This is to prevent the form from submitting when you click the submit button
        return false; //if i take this line out it submits either way
        }


    });

答案 1 :(得分:0)

返回false将不允许按钮提交,这也是因为返回false语句在ajax完成调用之前运行。因此,我认为您需要有一个隐藏按钮,当响应==“是”时,您将其称为提交。