我需要通过单击与小部件无关的div
来选择要使用dojox / Uploader上传的文件。
我已尝试使用on.emit
,但没有任何反应(也{d}在{d}节点click()
,onclick()
等... ...
这是我的代码:
var myUploader = new dojox.form.Uploader({
id : 'myUploader',
url : baseUrl + '/upload/form',
style : {
'overflow': 'hidden',
'position': 'relative',
'opacity' : 0
}
},"uploaderHolder");
myUploader.startup();
var importButtonNode = dom.byId("importDivButton");
on(importButtonNode,"click",function(evt) {
on.emit(myUploader.domNode, "click", {
bubbles: true,
cancelable: false
});
小部件必须隐藏,所以我不能按小部件选择按钮。我需要通过单击其他div打开选择文件对话框,以便...如何以编程方式打开文件浏览器以选择文件?
任何帮助将非常感谢。 (请原谅我的英文不好) 感谢
答案 0 :(得分:3)
好吧,我找到了解决方案。我拿一个小部件内部节点来调用click,并将一个监听器附加到Uploader更改事件并完成事件......
首先,将click事件附加到节点。
var importButtonNode = dom.byId("myImportDiv");
on(importButtonNode,"click",function(evt) {
myUploader.domNode.childNodes[0].click();
});
附加到上传器更改并完成事件处理程序
myUploader.on("change",function(evt){
if(evt[0].type != FileTypes.XSLX_FILE_TYPE){
alert("Error file type must be XLSX");
} else {
var formData = new Object();
formData.idProject = project.id;
myUploader.upload(formData);
}
});
myUploader.on("complete",function(evt){
alert("File Uploaded");
// do things
});
在我的情况下,我需要发送没有表单的formdata ...所以使用de upload方法。该文件也必须是XLSX。
我希望这会有所帮助。
此致