javascript - 如何防止在 firefox 中的人工提交事件中提交表单(页面导航)?

标签 javascript html forms firefox

似乎我所做的一切都无法阻止表单加载新页面。我有以下测试代码:

<form id="form" onsubmit="return false">
 <input id='input'>
 <input id='submit' type="button" value="click me">
</form>
<script>
 var form = document.getElementById("form")
 form.addEventListener("submit", (ev) => {
   console.log("submit")
   ev.preventDefault()
   ev.returnValue = false
   return false
 })
 form.dispatchEvent(new Event('submit'))
</script>

页面只是一遍又一遍地加载和重新加载。这是 Firefox 中的错误吗?我的版本是 60.7.0esr

最佳答案

您需要制作事件 cancelable通过添加 cancelable属性(property)给EventInit您需要传递给 Event 的对象构造函数。是false默认情况下。

考虑 MDN Event Documentation :

cancelable: a Boolean indicating whether the event can be cancelled. The default is false.

var form = document.getElementById("form")
form.addEventListener("submit", (ev) => {
  console.log("submit")
  ev.preventDefault()
  ev.returnValue = false
  return false
})
form.dispatchEvent(new Event('submit', {
  cancelable: true
}))
<form id="form" onsubmit="return false">
  <input id='input'>
  <input id='submit' type="button" value="click me">
</form>

关于javascript - 如何防止在 firefox 中的人工提交事件中提交表单(页面导航)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56694597/

相关文章:

javascript - 单击以删除 AngularJS 中动态创建的元素

javascript - 如何将多个 HTML 文件加载为 "document",然后使用 Javascript 操作它们?

javascript - 如何绑定(bind)PhoneJs中两个表的数据?

php - 是什么导致我的 PHP 页面将 html 标记呈现为文本(我该怎么做才能修复它)?

javascript - 如何在同一网页上添加第二个幻灯片

python - Flask - 如何将 request.files ['image' ] 读取为 base64?

javascript - 如何使用相同的按钮/div 在没有主体滚动的情况下切换覆盖

javascript - 单击任何菜单项时悬停属性丢失

javascript - 将 onsubit 函数附加到带有参数的表单

ruby-on-rails - Rails 形式的 f.input 有什么作用?