javascript - jQuery 表单验证 - 在 PreventDefault 后无法提交

标签 javascript jquery forms validation

我刚刚开始学习 jQuery,并尝试创建自己的表单验证作为学习方法。

我想要实现的是,当提交表单时,它将检查 .required 类的任何字段是否为空,如果是,则突出显示该字段。这工作正常,但是当表单正确填写后,它不会提交。

我真的不知道我哪里错了。如果有人可以提供帮助,我们将不胜感激。

$('#contact').submit(function(event) { 

  event.preventDefault();
  var isFormValid = true;

  $('.required').each(function() {    

    if ($(this).val() == '') { 

       $(this).removeClass("valid").addClass('invalid');
       isFormValid = false;
    }

  });

  if(isFormValid = true) { 
     $('#contact').submit(); 
  }


});

最佳答案

您正在尝试递归提交表单。当您调用 .submit() 时,相同的处理程序会再次被命中(这会阻止实际的提交)。

您还在 if 中分配了标志。 if(isFormValid = true) 应该使用 ==,但无论如何都不需要该代码。

仅将 preventDefault 移至实际失败的位置,并且不要尝试重新提交。就让它过去吧。

$('#contact').submit(function(event) { 
  $('.required').each(function() {    
    if ($(this).val() == '') { 
       $(this).removeClass("valid").addClass('invalid');

       // only prevent submit if there is a problem
       event.preventDefault();
    }
  });
});

关于javascript - jQuery 表单验证 - 在 PreventDefault 后无法提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26885681/

相关文章:

php - HTML 表单在提交时发布 PHP 文件而不是发送电子邮件

javascript - 是否可以克隆包含 javascript 的内容并维护状态?

javascript - 前置所有 CSS 选择器

javascript - javascript中的确认模式对话框

javascript - 为新的 div 添加独特的类

html - 向 rails date_select 助手添加标签

javascript - 为什么 Javascript promise 会乱序解决?

javascript - 这是什么javascript语法? !功能(){}

javascript - 使用 if 语句检查变量 true

javascript - 必须有更好的方法 - 随着用户输入的变化而更改搜索