防止表单提交的问题

问题描述

我目前遇到了一个无法解决的问题,我有一个通过 Javascript 提交的表单,但我无法阻止它,你能帮我吗。我提供了最小的可重现脚本。 提前致谢。

<form name="f" id="f" action="asd" method="post" enctype="multipart/form-data"></form>
<script> 
    document.getElementById('f').addEventListener("submit",function(evt) {
       evt.preventDefault();
    },true);

    window.addEventListener('load',() => {
      document.getElementById('f').submit()
    },false )
 </script>

解决方法

问题在于代码执行流程。它在添加事件侦听器之前提交表单。

让您有时间为您的代码添加事件侦听器。我建议您在 document.onready 事件中执行提交。 下面是一个简单的例子:https://jsfiddle.net/7453uvt6/7/

,

我搜索了 HTMLFormElement.submit 的文档,我发现使用 submit 不会触发 form.submit 事件。您必须使用 form.requestSubmit 请参阅 https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submithttps://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/requestSubmit