2016-12-16 129 views
3

我試圖執行一個解決方案,您隱藏用戶爲輸入類型'文件'選擇的文件。以下是概述解決方案的堆棧文章:input type=file show only button無法捕獲onChange事件

我無法捕獲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

你*調用*'這一點。 saveFileToStoreOnChange()'而不是*將它傳遞給'on()'。 –

回答

2

您不必在事件正確的上下文。綁定或使用箭頭功能:

onClick={(e) => this.saveFileToStoreClick(e)} 

我不知道爲什麼你使用jQuery編程雖然結合事件(甚至使用jQuery或ID選擇,而不是一個參考)。我不明白在文件輸入上沒有onChange處理程序的原因。

作爲一個評論者說你也在調用該函數而不是將它傳遞給你的事件。

+0

沒有工作。事件仍未定義。 – nikotromus

+0

我沒有在文件輸入onChange處理程序的原因可以在這裏找到:http://stackoverflow.com/questions/1084925/input-type-file-show-only-button。這是我試圖在所選文件被隱藏的地方實施的第二個解決方案。 – nikotromus

+0

解決這個問題的正確方法是不使用jQuery和React ... – Conan

0

你打電話給this.saveFileToStoreOnChange()而不是傳遞函數。

你的代碼更改爲:

$('#logo').on('change', this.saveFileToStoreOnChange); 

(見刪除()函數名後)

+0

沒有工作。它從來沒有把它變成saveFileToStoreOnChange方法 – nikotromus

0

此代碼可以幫助你

saveFileToStoreClick(){ 

      $('#logo').on('change', this.saveFileToStoreOnChange()); 
     } 

    saveFileToStoreOnChange(event){ 


      let file = event.currentTarget.files[0]; 
    } 
+0

lol - nope。事件仍未定義。扣... – nikotromus