2011-08-02 89 views
2

我正在使用jQuery的「更改」功能處理HTML輸入文件字段的「onChange」事件。這按預期工作,並確實在元素值發生變化時觸發。但是,並非在以下情況下:jQuery - 輸入字段更改事件無法正常工作......正如所料

  1. 用戶指定要上載的文件。我們稱這個文件爲「file.dat」。

  2. jQuery稍後通過使用 val函數將文件字段的值設置爲「」。

  3. 用戶指定要上傳完全相同的文件「file.dat」。

在上述情況下,「的onChange」不會被調用在步驟3。但是,如果在步驟3用戶指定一個不同的文件,它確實被調用。

是因爲我使用jQuery的val函數來更改值嗎?如果我想將輸入文件字段重置爲其基本/默認值,還有其他替代方法嗎?

回答

1

出於安全原因,JavaScript無法影響file輸入的值。它看起來似乎已經清除了這個值,但它並不是真的。

您可以通過重置整個表單或再次創建元素並將其插入到DOM中來代替舊的元素。

這是一個工作example。請注意使用jQuery live函數來綁定change事件。這是必需的,因爲每次單擊「清除」按鈕時,我們都會向DOM中插入一個新元素。

0

你試過.reset()而不是.val()嗎?