onclick输入文件,只触发一次onChange事件

onclick on input File, fired only one time onChange event

本文关键字:一次 事件 onChange 文件 输入 onclick      更新时间:2023-09-26

我的代码有问题。当"simulateClickBtn"被调用时,系统弹出一个选择文件的窗口。当选择文件时,我们将转到回调,sendMessage函数完成。但这只是第一次有效。其他时候,我从来没有改变回调…

HTML:

<input type="file" id="hiddenInput" name="somename" size="chars">

JS:

this.simulateClickBtn = function simulateClickBtn() {
  localFileChoose = undefined ;
  $('#hiddenInput').click();
  $('#hiddenInput').off().on("change", function(evt){
    chrome.runtime.sendMessage({
      message : "SHOW_UPLOAD_TYPE_VIEW",
      fileName: evt.target.files[0].name,
    }, function(response) { });
    localFileChoose = evt.target.files[0];
  });
};

所以,你可能不想在模拟点击处理程序中绑定隐藏的点击处理程序。每次点击都会重新绑定,这是不必要的。试试这样做:

var chosenFile;
this.simulateClickBtn = function simulateClickBtn() {
  $('#hiddenInput').click();
};
$('#hiddenInput').on('change', function(evt) {
  chrome.runtime.sendMessage({
    message : 'SHOW_UPLOAD_TYPE_VIEW',
    fileName: evt.target.files[0].name,
  }, function(response) { });
  chosenFile = evt.target.files[0];
});