jquery - 如何在提交表单之前等待ajax验证完成?

标签 jquery ajax validation

在 validateUsername 函数有机会完成服务器端的用户名检查之前,存在表单提交的问题。

如何仅在 validateUsername 函数完成后提交表单? 希望这是清楚的...

form.submit(function(){
    if (validateUsername() & validateEmail() & validatePassword()) {
        return true;
    } else {
        return false;
    }
});         

function validateUsername(){            
    usernameInfo.addClass("sign_up_drill");
    usernameInfo.text("checking...");
    var b = username.val();
    var filter = /^[a-zA-Z0-9_]+$/;     
    $.post("../username_check.php",{su_username:username.val()},function(data) {
        if (data=='yes') {
            username.addClass("error");
            usernameInfo.text("sorry, that one's taken");
            usernameInfo.addClass("error");
            return false;           
        } else if (!filter.test(b)) {
            username.addClass("error");
            usernameInfo.text("no funny characters please");
            usernameInfo.addClass("error");
            return false;   
        } else {
            username.removeClass("error");
            usernameInfo.text("ok");
            usernameInfo.removeClass("error");      
            return true;    
        }
    });             
}   

最佳答案

奥拉维尔回答的更详细版本 - AJAX 调用已发出,函数无需等待即可返回。

在您提交表单之前,回调不会完成。

您应该做的是让按钮/触发器调用 AJAX 验证,并且回调应该提交表单而不是返回 true。

关于jquery - 如何在提交表单之前等待ajax验证完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/866654/

相关文章:

javascript - Ajax 处理订单

javascript - JQuery 验证 : Validating a hidden form (possible bug)

jquery - 将 live() 替换为 on()

jquery - 以 IE7 为目标并在新的 Web 应用程序上使用强制 IE8 进入 IE7 模式的标签会产生什么影响?

php - $(Document).ready 不会触发代码,但会在控制台中运行

javascript - 当内容低于 setInterval 时模态不显示

javascript - 在不刷新页面的情况下删除 URL 参数

javascript - 使用 jQuery each 和 javascript 正则表达式匹配 HTML block 中的最低价和最高价

ruby - 如何使用 Ruby 检查域是否存在?

validation - gin-gonic 中的多部分文件上传验证