jquery - 使用enter提交时AJAX表单提交

标签 jquery ajax forms

我有一位设计师坚持要求通过按 Enter 键提交单个表单字段、AJAX 发布的帖子以及 Fancybox 呈现的响应。

问题是return false并没有阻止页面的提交。

我在那里做错了什么?

<form id="home_stay_informed_form">
<input name="informed_email" id="home_informed_email" value="Enter your email address..." />
</form>


$('#home_stay_informed_form').submit(function() {
  var reg = new RegExp(/^\S+@\S+\.\S+$/);
  var em = $("#home_informed_email").val();
  if (!reg.test(em)) {
  alert('Please correct your email address.');
  $("#home_informed_email").focus();
    return false;
  } else {
  $.ajax({
    type: "POST",
    url: 'listSubscribe.php',
    data : 'email=' + em,
    success: function(msg) {
     $("#home_stay_informed_form_msg").fancybox({
    'titlePosition'  : 'outside',
    'transitionIn'  : 'none',
    'transitionOut'  : 'none'
   });
    $("#home_informed_email").val('Enter your email address...');
    return false;
    }
  });   
  }
});

最佳答案

return false 需要直接在 submit 处理程序中执行,如下所示:

$('#home_stay_informed_form').submit(function() {
  var reg = new RegExp(/^\S+@\S+\.\S+$/);
  var em = $("#home_informed_email").val();
  if (!reg.test(em)) {
    alert('Please correct your email address.');
    $("#home_informed_email").focus();
  } else {
    $.ajax({
      type: "POST",
      url: 'listSubscribe.php',
      data : 'email=' + em,
      success: function(msg) {
        $("#home_stay_informed_form_msg").fancybox({
          'titlePosition'  : 'outside',
          'transitionIn'  : 'none',
          'transitionOut'  : 'none'
        });
        $("#home_informed_email").val('Enter your email address...');
      }
    });   
  }
  return false;
});

在服务器响应返回之前,您的 success 处理程序不会运行,因此您的函数实际上为该 else 语句返回 undefined。 ..并且里面的 return false 没有任何效果。像上面一样将其直接放入 submit 处理程序中将执行您想要的操作,从而阻止表单提交。

<小时/>

更干净一点的是 event.preventDefault() ,通过在此处添加事件参数:

$('#home_stay_informed_form').submit(function(e) {

并将 return false 替换为

e.preventDefault();

关于jquery - 使用enter提交时AJAX表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4180084/

相关文章:

javascript - 如何在 ChartJS donut 上用浅灰色更改标签删除线?

javascript - AJAX - 检索多个响应值?

jquery - 使用 jQuery 的异步 ajax 请求会卡住 Chrome

javascript - javascript中的多线程

ajax - 在grails服务中使用g.render

c# - 仅当页面向下滚动时才加载数据MVC 4 Jquery Mobile

javascript - 如何在 html 元素的 jquery 中使用 Ajax 从 Json 发送数据?

css - @media 使用 CSS 打印查询使我的打印机崩溃

forms - 如何在 Zend 框架 2 中禁用 inArray 验证器表单

php - 如何禁用 phpmailer 消息