onclick on input File,只触发一次onChange事件

时间:2015-06-05 09:03:55

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

1 个答案:

答案 0 :(得分:1)

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

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