是否有机会检测用户为文件元素类型的HTML输入所做的每个文件选择?

这个问题以前被问过很多次,但是如果用户再次选择相同的文件,通常建议的onchange事件不会触发。


当前回答

<form enctype='multipart/form-data'>
    <input onchange="alert(this.value); this.value=null; return false;" type='file'>
    <br>
    <input type='submit' value='Upload'>
</form>

this.value =零;只是必要的Chrome, Firefox将工作良好只是返回false;

这是一把小提琴

其他回答

清除输入的第0个索引的值对我来说很有用。请尝试下面的代码,希望这将工作(AngularJs)。

          scope.onClick = function() {
            input[0].value = "";
                input.click();
            };

在文件成功加载后,可以做任何您想做的事情。完成文件处理后,将文件控制的值设置为空白字符串。因此.change()将始终被调用,即使文件名更改与否。举个例子,你可以做这件事,对我来说很有魅力

   $('#myFile').change(function () {
       LoadFile("myFile");//function to do processing of file.
       $('#myFile').val('');// set the value to empty of myfile control.
    });

使用onClick事件清除目标输入的值,每次用户单击字段。这确保onChange事件也将针对同一文件被触发。为我工作过:)

onInputClick = (event) => {
    event.target.value = ''
}

<input type="file" onChange={onFileChanged} onClick={onInputClick} />

使用打印稿

onInputClick = ( event: React.MouseEvent<HTMLInputElement, MouseEvent>) => {
    const element = event.target as HTMLInputElement
    element.value = ''
}
handleChange({target}) {
    const files = target.files
    target.value = ''
}
<form enctype='multipart/form-data'>
    <input onchange="alert(this.value); this.value=null; return false;" type='file'>
    <br>
    <input type='submit' value='Upload'>
</form>

this.value =零;只是必要的Chrome, Firefox将工作良好只是返回false;

这是一把小提琴