检测用户何时使用文件输入选择文件

Posted

技术标签:

【中文标题】检测用户何时使用文件输入选择文件【英文标题】:Detect when a user chooses a file using a file input 【发布时间】:2011-03-14 05:27:11 【问题描述】:

如何检测用户何时使用 html 文件输入选择要上传的文件。这样我就可以自动提交表单了。

【问题讨论】:

【参考方案1】:

文件上传元素在其内容发生更改时触发 onchange 事件。这是一个非常简洁的例子:

<input type="file" name="whatever" onchange="alert('Changed!');" />

编辑:哦,如果您想在他们选择某些内容时提交表单(尽管这可能会让您的用户有些困惑):

<input type="file" name="whatever" onchange="this.form.submit();" />

【讨论】:

刚刚注意到您使用的是 jQuery,在这种情况下,您需要像 Reigel 建议的那样使用 change() 事件。【参考方案2】:

试试

$('#inputfileID').change(function()
alert(0);
)​

【讨论】:

【参考方案3】:

检测文件输入变化的普通 javascript 方法:

var fileInput = document.getElementById('inputfileID')
fileInput.addEventListener('change', function () 
  // Called when files change. You can for example:
  // - Access the selected files
  var singleFile = fileInput.files[0]
  // - Submit the form
  var formEl = document.getElementById('formID')
  formEl.submit()
, false);

顺便提一下:false 属性表示不使用捕获,即false 表示 DOM 树中的相关change 侦听器以自下而上的顺序执行。这是默认值,但您应该始终提供该属性以最大限度地提高兼容性。

另请参阅a SO answer about change event、MDN docs for addEventListener 和 a SO answer about form submission。

【讨论】:

以上是关于检测用户何时使用文件输入选择文件的主要内容,如果未能解决你的问题,请参考以下文章

检测文件何时被拖到文件输入

如何检测同一文件的输入类型=文件“更改”?

检测用户何时点击 SKSpriteNode

检测用户何时点击 UIDatePicker 中的选择指示器?

检测子进程何时等待输入

线程同步 - 何时终止线程?