有以下最低限度可重现的示例:
<form id="upload-form" enctype="multipart/form-data">
<input type="file" id="file-input" style="display: none;" />
<label for="file-input" id="file-label">Выберите файл</label>
</form>
<script>
const fileInput = document.getElementById('file-input');
const fileLabel = document.getElementById('file-label');
fileInput.addEventListener('change', (event) => {
alert("File selected!");
document.getElementById('upload-form').submit();
});
document.getElementById('upload-form').addEventListener('submit', (event) => {
event.preventDefault();
alert("Form send!");
});
</script>
为什么在这种情况下,表单未发送/无法addEventListener与参数一起使用submit?那些。alert("File selected!"); 它有效,但alert("Form send");它不...
先感谢您!
你的错误是你认为一个方法
submit()会引发一个事件submit,但事实上它不会。您可以通过阅读MDN 中的几行来验证这一点:
submit您可以使用方法来代替 方法requestSubmit,该方法不存在上述问题,但仅在现代浏览器上支持。另外,正如@Quazimorda指出的那样,该方法
preventDefault阻止标准事件(即本例中的表单提交)。使用上面的信息,代码如下: