2010-04-14 96 views

回答

2

更新:請參閱@bobince的評論。這是jQuery的Sizzle選擇器的一個錯誤,因爲屬性和屬性之間的界線模糊不清。相關的線從jQuery的源:

elem[ name ] != null ? 
    elem[ name ] : 
    elem.getAttribute(name), 

它查找該名稱的對象的屬性首先,如果失敗,退回來的getAttribute()。按照@Aaron的建議,最好過濾val()


在這裏留下舊的答案,爲了其他人的利益可能碰到這個無辜的選擇。

null將被解釋爲字符串。因此,名稱爲「null」的選定文件將被排除。相反,只需選擇value屬性所在的文件元素即可。值應該只有被定義,如果用戶選擇了該字段的文件。

$('input:file[value]') 
+0

輝煌,就像一個魅力。謝謝!一旦涼爽結束,我會立即接受。 – Matt 2010-04-14 23:03:15

+0

這隻會選擇''帶有'value =「...」* *屬性*存在 - 除IE外,由於它處理表單字段值的錯誤。您可能不會在任何文件輸入中放置「value」屬性,因爲瀏覽器對文件輸入的默認值沒有任何作用。如果你正在尋找文件輸入方式不同的文件,那麼你需要按照Aaron的方式去做。 – bobince 2010-04-14 23:27:34

+0

@bobince,指定':file'過濾器在這裏做了一些jQuery魔術(我不知道該說些什麼),但它讓jQuery看起來像' .value'(適用於我的Chrome) - 一些測試 - http://jsfiddle.net/ez4Xe/ – Anurag 2010-04-15 04:14:09

3

使用的東西.filter()可能的工作:

$('input:file').filter(function (file) { 
        return $(this).val().length > 0; 
       }) 
+0

大概你的意思是'val().length> 0'。 – bobince 2010-04-14 23:27:05

+0

噢,當然對不起,我會編輯它 – 2010-04-14 23:29:42

相關問題