[英]e.preventDefault prevents succeeding submit events
我有一个表单的事件监听器。 如果验证失败,我会调用e.preventDefault()
。 向用户显示一条消息,他们修复错误,然后尝试再次提交表单。 我遇到的问题是e.preventDefault()
function 在验证失败后阻止表单再次提交。 我知道该事件需要再次绑定到表单元素,但我不确定解决此问题的最佳方法。 这是我的代码:
form.addEventListener("submit", function(e){
let submitBtn = document.getElementById("cr-submit");
submitBtn.disabled = true;
if(validateForm() === false){
submitBtn.disabled = false;
e.preventDefault();
}
}, false);
我相信事件 object 每次都是新的,因此您不必“阻止”默认行为。 validateForm() function 更有可能在您不期望的情况下返回 false。
我怀疑您的validateForm()
没有按您的预期工作,因为您的代码应该在 validateForm().== false 时提交。 也许validateForm()
总是返回 false?
所以我的问题最终与e.preventDefault()
完全无关,实际上是由我使用的框架 Ruby on Rails 引起的。 RailsUJS
在提交时自动禁用表单提交按钮。 jQuery
,我以前使用的这个实现很好。 但是,当我将 jQuery 转换为纯JS
时,启用该字段的代码实际上并未启用该字段。 在我的听众被解雇后, RailsUJS
似乎实际上禁用了该字段。 所以,我不得不从我的提交按钮中删除自动禁用功能,现在我让我的JS
处理禁用该按钮。
<%= i.submit("Submit", data: { disable_with: false }) %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.