选择带有 <input type="file> 的文件时如何防止表单提交?
How to prevent form submit when choosing a file with <input type="file>?
我的页面上有一个文件输入:
<input type="file" id="file-main" style="display:none;" name="file-main">
我有一个指向该输入的标签:
<button class="main-button" id="file-choose-btn"><lable for="file-main">Choose Image</lable></button>
但是当我按下按钮(选择文件)时,表单立即被提交,并尝试执行 PHP 文件(在表单的 "action" 中)。
我还没有那个文件,所以它 returns 一个 HTTP 404 错误。
基本上,我的问题是,如何防止在单击(或本例中的按钮)后执行表单。
我试过使用阻止事件默认操作的事件处理程序:
document.getElementById("file-choose-btn").onclick = function(e){
e.preventDefault();
}
但是我什至无法选择文件,因为 window 甚至都没有打开。
有什么解决办法吗?谢谢
制作按钮类型 button
这样它就不会提交表单:
<button type="button" class="main-button" id="file-choose-btn">
<lable for="file-main">Choose Image</lable>
</button>
默认情况下,按钮的类型为 submit
,因此您会得到这种行为。
我的页面上有一个文件输入:
<input type="file" id="file-main" style="display:none;" name="file-main">
我有一个指向该输入的标签:
<button class="main-button" id="file-choose-btn"><lable for="file-main">Choose Image</lable></button>
但是当我按下按钮(选择文件)时,表单立即被提交,并尝试执行 PHP 文件(在表单的 "action" 中)。 我还没有那个文件,所以它 returns 一个 HTTP 404 错误。
基本上,我的问题是,如何防止在单击(或本例中的按钮)后执行表单。
我试过使用阻止事件默认操作的事件处理程序:
document.getElementById("file-choose-btn").onclick = function(e){
e.preventDefault();
}
但是我什至无法选择文件,因为 window 甚至都没有打开。
有什么解决办法吗?谢谢
制作按钮类型 button
这样它就不会提交表单:
<button type="button" class="main-button" id="file-choose-btn">
<lable for="file-main">Choose Image</lable>
</button>
默认情况下,按钮的类型为 submit
,因此您会得到这种行为。