问题描述
我目前遇到了一个无法解决的问题,我有一个通过 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/submit 和 https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/requestSubmit