jQuery对文件名的更改在firefox和chrome上的行为不同

时间:2018-07-14 22:13:14

标签: jquery

我正在以此触发文件名字段的更改

ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'

通过按钮调用文件对话框的地方:

$('#filename-field').change(function()
{
...
});

它在Firefox中始终有效。但是在Chrome中,如果我选择的文件与上次相同,则不会触发change事件。显然,两种浏览器对“更改”的含义有不同的解释。

是否有任何让Chrome能够识别选择文件的简单方法的想法?

1 个答案:

答案 0 :(得分:1)

您可以添加一个 public enum Note { DO, RE, MI, FA, SOL, LA, SI; static { Enum.valueOf(Note.class, Note.DO.name()); } public static Note valueOfOrDefault(String name, Note defaultValue) throws Exception { return Enums.valueOfOrDefault(Note.class, name, defaultValue); } public static <T extends Enum<T>> boolean hasValueFor(String name) throws Exception { return Enums.hasValueFor(Note.class, name); } } 事件,该事件在选择新文件之前清除输入。这样可以确保任何文件选择(包括再次选择同一文件)都将触发click事件。

change
var $filename = $('#filename-field');
  
$filename.click(function() {
  $(this).val('');
});

$filename.change(function() {
  console.log("File was changed.");
});

(如果您更喜欢用这种方式编写,当然可以将这两个事件链接起来。)