我正在尝试实施一种解决方案,您可以将用户选择的文件隐藏为输入类型的文件'。以下是概述解决方案的堆栈文章:input type=file show only button
我无法捕获onChange事件,因此无法读取该文件。方法中的事件' saveFileToStoreOnChange'未定义。我在哪里离开这里?
html(jsx):
<input className="invisible" type="file" id="logo"/>
<input type="button" value="Browse..." onClick={this.saveFileToStoreClick} />
使用Javascript:
saveFileToStoreClick(){
$('#logo').on('change', this.saveFileToStoreOnChange());
}
saveFileToStoreOnChange(event){
//event is undefined
let file = event.target.files[0];
}
答案 0 :(得分:2)
您在活动中没有正确的上下文。绑定或使用箭头功能:
INSERT INTO table2 (Date, Number1, Number2, Text1, Text2) values
SELECT A.Date, A.Number1, A.Number2, A.Text1, A.Text2
FROM Table1 A
EXCEPT
SELECT B.Date, B.Number1, B.Number2, B.Text1, B.Text2
FROM Table2 B;
我不知道为什么你以编程方式使用jQuery绑定事件(甚至使用jQuery或ID选择器而不是引用)。我不明白在文件输入上没有onClick={(e) => this.saveFileToStoreClick(e)}
处理程序的原因。
正如评论者所说,你也在调用函数而不是在事件中传递函数。
答案 1 :(得分:0)
您正在调用this.saveFileToStoreOnChange()
而不是传递该功能。
将您的代码更改为:
$('#logo').on('change', this.saveFileToStoreOnChange);
(请参阅功能名称后删除的()
)
答案 2 :(得分:0)
此代码可以帮助您
saveFileToStoreClick(){
$('#logo').on('change', this.saveFileToStoreOnChange());
}
saveFileToStoreOnChange(event){
let file = event.currentTarget.files[0];
}