当前位置: 首页 > 面试题库 >

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

沈运恒
2023-03-14
问题内容

表单在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;    
        }
    });             
}

问题答案:

Olafur答案的更详细的版本-进行AJAX调用,函数无需等待就返回。

提交表单之前,回调不会结束。

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



 类似资料:
  • 问题内容: JavaScript位: HTML位: 这就是我要使用的代码。我的想法是在使用Ajax发送表单之前,先验证所有输入。我现在已经尝试过许多版本,但是每次即使表单没有完全填写,最终还是要提交。我所有的输入都是“必需”类的。谁能看到我做错了吗? 另外,由于我的输入名称是用php生成的,因此我依赖于基于类的要求,因此我永远无法确定自己获得的名称或输入类型。 我在“页面”中显示/隐藏问题。 JS

  • 问题内容: 这应该很简单,但是却让我发疯。我有一个用ajax提交的html5表单。如果输入的值无效,则会弹出一个提示您的信息。在运行ajax提交之前,如何检查条目是否有效? 形成: 提交: 问题答案: 默认情况下,jQuery对HTML5验证一无所知,因此您必须执行以下操作:

  • 问题内容: 您好,我正在实现一个登录页面,从PHP方面来看一切正常,但是现在我将使用jQuery实现另一个功能:我想检查登录字段是否为空,如果不是,则在页面上打印一些内容,否则继续用php,该怎么做? 这是我的HTML代码的一部分: 问题答案: 将事件绑定到表单的提交(注意:并非单击提交按钮)。那就是您的代码去检查表单的地方,并在必要时阻止其发布。 如果您希望显示消息而不是使用对话框,请在页面上某

  • 本文向大家介绍EasyUI中在表单提交之前进行验证,包括了EasyUI中在表单提交之前进行验证的使用技巧和注意事项,需要的朋友参考一下 使用EasyUi我们可以在客户端表单提交之前进行验证,过程如下:只需在onSubmit的时候使用return $("#form1").form('validate')方法即可,EasyUi中form模块中的from('validate')方法会自行对我们指定的表单

  • 问题内容: 我正在构建一个两步表单的Angular JS应用。它实际上只是一种形式,但是当用户单击“下一步”按钮并转到步骤2时,使用JavaScript隐藏了第一个面板,并显示第二个面板。我在步骤1中的某些字段上设置了“必需”验证但是很明显,当用户单击“下一步”按钮时,它们不会得到验证…在步骤2的最后单击“提交”按钮时,它们将得到验证。 单击“下一步”按钮时,有什么方法可以告诉angular验证表

  • 我有一个Selenium测试,在测试中,我点击了一个表单中的submit按钮,如下所示: 接下来,我通过再次调用相同的url手动刷新页面,如下所示: 顺便说一下,webDriver的类型是< code>RemoteWebDriver。接下来,我将测试一些web元素,例如它们是否存在。本地一切正常。在gitlab Pipleine上没有。在管道上,只有当我添加< code>Thread.sleep(