javascript - 为什么在 FireFox 中单击按钮时文件打开对话框会打开两次

标签 javascript firefox file-upload html-input input-field

我有一个 file <input> field 和一个 <span> 装饰输入字段:

<span class="span5 btn btn-primary btn-file" id="chose_files_btn" onclick="filechose_button.click()">chose files
    <input id="filechose_button" type="file" name="fileData" size="1" style="display: none"/>
</span>

虽然我在 ChromeSafari 中的行为是这样的,但是 FireFox 打开两个 file input dialogs点击 button(span)

为什么会这样?

我假设,文件输入字段是不可见的,只能通过带有按钮行为的 span 访问它。

更新:

如果我将 <input> 放在 <span> 之外,它会正常运行。

 <span class="span5 btn btn-primary btn-file" id="chose_files_btn" onclick="filechose_button.click()">chose files</span>
 <input id="filechose_button" type="file" name="fileData" size="1" style="display: none"/>

JSFiddle

但为什么在 inside position 上没有呢?

最佳答案

这是因为某种事件传播困惑

<span class="span5 btn btn-primary btn-file" id="chose_files_btn" onclick="doOpen(event)">chose files
    <input id="filechose_button" type="file" name="fileData" size="1" style="display: none"/>
</span>

function doOpen(event){
    event = event || window.event;
    if(event.target.id != 'filechose_button'){
        filechose_button.click();
    }
}

演示:Fiddle

关于javascript - 为什么在 FireFox 中单击按钮时文件打开对话框会打开两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16292487/

相关文章:

javascript - 通过 Javascript 将数据传递到 Bootstrap Typeahead

google-chrome - 启动文件 ://from Firefox or Chrome

javascript - 在node-hound中绑定(bind)多个事件?

javascript - 如何使用 C# 或 JavaScript 检查 Chrome 和 Firefox 的最新可用版本?

firefox - 在 Firefox 扩展中捕获关闭选项卡事件

javascript - 如何在uploadcare中上传多个文件?

http - 在 MVC4 上的复杂模型中上传多个文件

php - 在 OpenShift 上使用 PHP 上传文件

javascript - 如何将 Electron 应用程序编译为 .exe

javascript - 从其他按钮点击触发按钮