如何跟踪是否使用javascript选择了文件?
因此,如果我有一个输入字段:如何跟踪是否使用javascript选择了文件?,javascript,select,upload,input,field,Javascript,Select,Upload,Input,Field,因此,如果我有一个输入字段: <input type="file" name="file" id="file" /> 我点击它并选择一个文件,当我按下Open时,我想提交表单并上传文件,而无需点击添加的按钮,正如Goresplater在下面指出的,请注意,这种行为在用户体验方面并不令人惊讶。例如,像GMail一样将文件附加到电子邮件中,这样做可能是完全有效的;但是,除非用户有机会在事情最终确定之前取消这些附件等,否则您可能会陷入用户体验的困境。但我希望您可能已经了解了用户体验方
<input type="file" name="file" id="file" />
我点击它并选择一个文件,当我按下
Open
时,我想提交表单并上传文件,而无需点击
添加的按钮,正如Goresplater在下面指出的,请注意,这种行为在用户体验方面并不令人惊讶。例如,像GMail一样将文件附加到电子邮件中,这样做可能是完全有效的;但是,除非用户有机会在事情最终确定之前取消这些附件等,否则您可能会陷入用户体验的困境。但我希望您可能已经了解了用户体验方面的内容,并且没有做一些愚蠢的事情。:-)
回答问题:您可以使用change
事件处理程序,例如onchange=
或通过addEventListener
(或IE上的attachEvent
)的DOM2等效程序来实现这一点
示例():
…其中,hookEvent
是用于连接事件处理程序的实用函数(例如,请参见下面的链接,但它没有经过优化;如果使用诸如、或之类的库,它们将包括跨浏览器连接事件的方法)
上面链接的示例适用于Chrome、Firefox和Opera for Linux,IE6和IE7适用于Windows,因此总体上很可能得到很好的支持。+1。它起作用了。这将是一个恼人的网站,虽然…有趣的东西,非常感谢它的工作完美!我不使用任何库,但我真的不明白它是如何工作的,我是说事件侦听器是如何工作的?它像彗星一样工作吗?元素本身在发生更改时启动函数,或者类似于
setInterval
,因此它总是检查元素是否已更改?@CIRK:当元素的值更改时,浏览器会触发该事件:
hookEvent(document.getElementById('fileInput'),
'change',
inputChanged);
function inputChanged() {
display("The input's value changed");
}