【问题标题】:How to track if file was selected with javascript?如何跟踪是否使用 javascript 选择了文件?
【发布时间】:2011-05-27 21:03:06
【问题描述】:

所以如果我有一个输入字段:

<input type="file" name="file" id="file" />

我单击它并选择一个文件,当我按下Open 时,我想提交表单并上传文件,而无需单击&lt;input&gt; 添加的按钮。

【问题讨论】:

    标签: javascript select upload input field


    【解决方案1】:

    正如 goreSplatter 在下面指出的那样,请注意这种行为在用户体验方面并不令人意外。例如,使用像 GMail 那样将文件附加到电子邮件的东西来执行此操作可能是完全有效的;但除非用户有机会在事情完成之前取消这些附件等,否则您可能会掉入 UX 坑。但我希望您可能已经解决了用户体验方面的问题,并且没有做一些愚蠢的事情。 :-)

    回答问题:您可以通过使用change 事件处理程序来做到这一点,例如onchange= 或通过addEventListener(或IE 上的attachEvent)等效的DOM2。

    示例 (live copy):

    hookEvent(document.getElementById('fileInput'),
              'change',
              inputChanged);
    
    function inputChanged() {
      display("The input's value changed");
    }
    

    ...hookEvent 是连接事件处理程序的实用函数(请参阅下面的链接作为示例,但它没有经过优化;如果您使用像 jQueryPrototype、@987654324 这样的库@、Closureany of several others,它们将包含一种跨浏览器挂钩事件的方法。

    上面链接的示例适用于 Chrome、Firefox 和 Opera for Linux,IE6 和 IE7 上适用于 Windows,因此总体上很可能得到很好的支持。

    【讨论】:

    • +1 表示可怕的建议。有用。不过,这将是一个令人讨厌的网站...
    • 有趣的东西,非常感谢它完美地工作!我不使用任何库,但我真的不明白这是如何工作的,我的意思是事件监听器是如何工作的?它像彗星一样工作吗?元素本身在更改时启动函数,或者它是否像setInterval 一样工作,所以它总是检查元素是否已更改?
    • @CIRK:当元素值改变时,浏览器触发事件​​:w3.org/TR/html5/…
    猜你喜欢
    • 2010-11-27
    • 2016-11-25
    • 2022-01-15
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    相关资源
    最近更新 更多