javascript - 如何响应非 IE 浏览器中输入类型=文件的点击事件

标签 javascript file firefox file-upload input

所以这是场景-

与 StackOverflow 上关于如何在 input[type=file] 元素上调用点击事件的 3000 个其他问题不同,我只想回复它。我正在寻找类似的东西:

<input id="theFile" onclick="var that=this;setTimeout(function(){if(that.value){postTheForm();}}),0);" />

我不是要在元素上调用 click(),我只是想知道何时有人选择了一个文件,以便我们可以提交表单。在 IE 中,它按预期工作,因为文件对话框使 javascript 线程休眠,直到用户在对话框中单击“打开”或“取消”。在 FireFox 中,对话框似乎不会使线程休眠,并且匿名函数会立即触发 - 即使对话框仍在运行。

我在想我是否可以使用 onchange 事件或 FireFox 中的其他东西来模拟 IE 行为,但到目前为止还没有成功。关于在用户单击对话框中的“打开”或“取消”后我如何执行代码的任何想法?

最佳答案

当您点击文件上传时,告诉 jQuery 聚焦它,当您选择一个文件并单击打开/取消时,它将失去焦点,也就是 blur

$(function() {
    $("#fileUpload").click(function() {
        $(this).focus();
    });
    $("#fileUpload").blur(function() {
        alert("blurred");
    });
});

我在 chrome 中测试过这个。

关于javascript - 如何响应非 IE 浏览器中输入类型=文件的点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5172540/

相关文章:

javascript - 函数仅适用于 <pre> 元素

javascript - 如何使用 FileReader 检测 '\n\r'

java - 如何使用 ImageIO 测试 BufferedImage 是否拾取 'null'

CSS 'text-shadow' 在 Firefox 中不工作

firefox - webGL readPixels 和 FireFox 35

javascript - 点击链接后 jquery 事件菜单丢失

javascript - 当侧边栏很长时,滚动/固定侧边栏会被切断

javascript - Firefox 移动浏览器中的视觉视口(viewport)检测

Java 文件问题

html - 在 Firefox 中使用 -moz-transform 选择框焦点错误