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

jQuery通过ajax验证电子邮件,然后再通过ajax提交表单

燕烨
2023-03-14
问题内容

我有一个配置文件创建表单,其中包含一个电子邮件地址字段。我需要确保用户输入的电子邮件地址格式正确,并且尚未使用。对于格式检查,我通过isValidEmailAddress函数执行了一个简单的客户端验证,效果很好。对于需要检查电子邮件地址是否不存在的另一部分,我向控制器方法执行了一个jquery帖子,如果该电子邮件已被某人使用,则返回一个字符串“电子邮件地址已在使用中”。第一个“
return false”下面的代码不会阻止表单提交。这是一个jquery是异步的东西吗?

  $(document).ready(function(){

    $("#new_profile").submit(function(){
      var email = $("#user_email").val();    
      if(isValidEmailAddress(email)){
        jQuery.post('/profiles/validate_email', {email: email}, function(data){
          if(data.match(/in use/)){
            $(".email-check-message").html(data);
            return false;
          }
        });
      }
      else{
        $(".email-check-message").html('please enter a valid email address');
        return false;
      }
    });    
  });

另外,上述功能中的jquery帖子似乎不起作用..as在我看来服务器日志中没有发生服务器调用。有人知道发生了什么吗?谢谢。


问题答案:

您必须无条件地取消提交,因为提交处理程序将在ajax请求返回之前完成执行(除非将async设置为false),因此您无法阻止已经发生的操作。您可以设置一个标志以指示电子邮件是否有效,然后提交表格

$(document).ready(function(){
    $("#new_profile").submit(function(e){
        if (!$('#new_profile').data('validemail')){
            e.preventDefault();
            var email = $("#user_email").val();    
            if(isValidEmailAddress(email)){
                jQuery.post('/profiles/validate_email', {email: email}, function(data){
                    if(data.match(/in use/)){
                        $(".email-check-message").html(data);
                    }
                    else{
                        $('#new_profile').data('validemail', true).submit();
                    }
                });
            }
            else{
                $(".email-check-message").html('please enter a valid email address');
            }
        }
    });     
});


 类似资料:
  • 问题内容: 所以假设我有3种形式 每个表单都有自己的提交按钮 现在假设我有另一种形式 其唯一的功能是同时提交所有其他3种形式。…现在这里是约束: 当submitAll提交后,它必须使用Ajax这样做,并且最好通过POST将输入的数据从所有其他3种形式转发到processor.php processor.php需要能够区分输入到哪种形式…然后分别处理每种形式的输入 我的问题是..什么是使proces

  • 问题内容: 我正在使用以下jQuery代码通过AJAX提交表单。 代码完美运行,没有ajax。 但是,如果我通过Ajax加载表单,则无法正常工作。 我认为这是因为JavaScript加载后通过ajax加载了表单。 有什么办法吗? 问题答案: 如果使用jQuery 1.7+,则可以尝试使用.on()委托事件并绑定到具有相同类的所有将来的表单。尝试查找没有动态插入的最接近的父代,而不是$(docume

  • 本文向大家介绍jquery+ajax验证不通过也提交表单问题处理,包括了jquery+ajax验证不通过也提交表单问题处理的使用技巧和注意事项,需要的朋友参考一下 validationEngine给我们为前端的表单验证减少了很大的工作量.大部分情况我们使用validationEngine验证表单的形式有几种方式: 1 使用正常的表单提交.这种情况validationEngine验证不通过是不会提交

  • 问题内容: 我想通过jquery ajax提交此表单,这是我所做的,并且不起作用。即表格提交与页面刷新,我没有看到响应,即在同一页面上打印数组。 的HTML PHP(submit.php) 问题答案: 使用此方法-出现一些语法错误,必须提交事件

  • 问题内容: 我正在尝试通过ajax帖子提交多种表单,但是问题是服务器在帖子中返回了一个空数组。 这是我的JS中的代码: 在服务器端: 我究竟做错了什么?谢谢! 问题答案: 不,没有属性,其: 是标记中使用的属性。 样本输出 旁注:我认为更合适: 另一个例子

  • 问题内容: 感谢balexandre和rtiq,我的工作流程已经全部解决。我的.ashx文件正在被调用,所以我知道部分代码正在运行,并且警告我错误。当我跟踪.NET时,通过context.Request[“ email”]和context.Request [“ optin”]引入的变量为NULL。 我知道有什么问题,但看不到。我重新编辑了这篇文章,以获取最新的代码。 HEAD中的jQuery HT