HTML文件输入框不会触发fileSelect事件并在onchange事件中发出警告 - angularJS

时间:2014-12-09 13:45:58

标签: javascript html angularjs file-io

我使用HTML文件类型控件来选择和上传文件(使用AngularJS)。我的加价如下:

<input id="uploadFile" accept=".csv" type="file" ng-file-select="model.onFileSelect($files)" onchange="angular.element(this).scope().fileNameChanged(this)">

因此,当我选择任何文件时,会触发fileNameChanged事件而不是onFileSelect。这到目前为止工作正常。但是,如果我选择要上传的同一文件,则不会触发fileNameChanged事件(因为我上传了同一个文件),但我想允许用户一次又一次地上传同一个文件。 onFileSelect事件永远不会被触发。

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

最后让它工作,在HTML中我添加了onclick JS事件,如下所示:

<input id="uploadFile" onclick="myFunction();" accept=".csv" type="file" ng-file-select="model.onFileSelect($files)" onchange="angular.element(this).scope().fileNameChanged(this)">

function myFunction() {
  //setting value of null of 0th index coz in my case i allow user to upload only single file.
  //in case of multiple files, you gotta set value to null of the entire array of file list
  //returned by the control
  $('#uploadfile')[0].value = null;
  return true;
}

有了这个,控件就不会缓存文件名,下次当选择同一个文件时,onChange事件就会被触发。

如果您仍然遇到任何问题,请告诉我。

THX, Sagar的