2014-07-07 53 views
3

我需要選擇一個文件上傳與dojox /上傳器通過點擊div無關的部件。打開文件選擇dojox /上傳器編程

我使用on.emit tryed,但沒有任何反應(也click()onclick()等..上domNodes ..)

這是我的代碼:

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 
}); 

窗口小部件必須隱藏,所以我不能按小工具選擇按鈕。我需要打開選擇文件對話框,通過點擊其他股市所以...我怎樣才能打開文件瀏覽器編程方式選擇一個文件?

任何幫助將不勝感激。 (請原諒我的英文不好) 謝謝

+0

什麼是您的問題? –

+1

如何以編程方式打開文件瀏覽器來選擇文件?小部件按鈕將被隱藏。 – bertie

+0

請點擊編輯按鈕,將您的問題添加到問題文章並進行相應修改。這有助於找到問題的答案。 –

回答

3

好吧,我找到了一個解決方案。我拿一個小部件的內部節點來調用點擊,並將一個監聽器附加到上傳器更改事件並完成事件...

首先,將點擊事件附加到節點。

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沒有一個形式...所以去上傳方法使用。此外,該文件必須是XLSX。

我希望這會有所幫助。

Regards