javascript - onclick 输入文件,仅触发一次 onChange 事件

标签 javascript jquery

我的代码有问题。 当调用“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];
  });
};

最佳答案

因此,您可能不希望在模拟单击处理程序中绑定(bind)隐藏的单击处理程序。每次单击时都会重新绑定(bind)它,这是不必要的。尝试这样的事情:

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];
});

关于javascript - onclick 输入文件,仅触发一次 onChange 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30662497/

相关文章:

javascript - 使用jquery显示或隐藏按钮?

javascript - MongoDB 投影将子对象作为列返回

javascript - aspx 按钮防止回发 onclick (c#)

javascript - 如何根据屏幕尺寸完全删除元素

javascript - 当参数包含 html 标记时 Ajax 调用失败

javascript - 滚动后突出显示事件的 div

javascript - JS 窗口宽度/高度函数 - 有效但需要一些建议

JavaScript 需要保留 "selected"选项

javascript - promise 错误/异常处理设计

javascript - 在 node.js 中协调并行执行