Javascript e、 preventDefault()或return false无法停止文件输入以打开
如何在上载文件时阻止文件上载窗口打开Javascript e、 preventDefault()或return false无法停止文件输入以打开,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,如何在上载文件时阻止文件上载窗口打开 export default class Upload extends Component { constructor(props) { super(props); this.state = { filename: null, isLoading: false } } trigger_upload_input = () => {
export default class Upload extends Component {
constructor(props) {
super(props);
this.state = {
filename: null,
isLoading: false
}
}
trigger_upload_input = () => {
document.getElementById("browse-file").click();
}
handleOnChange = (e) => {
if(e.target.files[0]) {
this.setState({filename: e.target.files[0].name, isLoading: true});
var that = this;
setTimeout(function(){
that.setState({isLoading: false})
},3000)
}
}
handleInputClicked = (e) => {
if(this.state.isLoading){
e.preventDefault();
}
}
render() {
const { isLoading } = this.state;
return(
<div className="upload">
<div>
<input onClick={this.handleInputClicked} onChange={this.handleOnChange} type="file" id="browse-file"/>
{this.state.filename && <span>{this.state.filename}</span>}
</div>
</div>
)
}
}
导出默认类上载扩展组件{
建造师(道具){
超级(道具);
此.state={
文件名:null,
孤岛加载:false
}
}
触发器上传输入=()=>{
document.getElementById(“浏览文件”)。单击();
}
变化=(e)=>{
if(e.target.files[0]){
this.setState({filename:e.target.files[0].name,isLoading:true});
var=这个;
setTimeout(函数(){
that.setState({isLoading:false})
},3000)
}
}
handleInputClicked=(e)=>{
if(此.state.isLoading){
e、 预防默认值();
}
}
render(){
const{isLoading}=this.state;
返回(
{this.state.filename&&{this.state.filename}
)
}
}
加载指示器工作,但当我尝试再次单击输入时,e.preventDefault()不会停止文件窗口的打开,try
return false
没有解决问题?trye.stopPropagation()
,可能会有帮助()
更新
看起来,可以使用onChange处理程序添加禁用的属性。这将阻止打开对话框。加载完成后可以删除此属性。您可以像这样攻击浏览器行为
e.target.disabled = true;
setTimeout(function () { e.target.disabled = false; }, 500);
可能只是在输入中添加一个禁用的属性,以防止其被单击?