2015-02-08 111 views
0

在jquery中我試圖清除一個字段,但是如果我這樣做,它會拋出一個錯誤。它確實使字段變空,但也會引發錯誤。我該如何解決這個問題?如何清除jQuery中的輸入文件字段?

感謝

HTML

<input name="file" type="file" accept="image/*"> 

JS

var input = $("#profile-edit-form").find("input[name=file]"); 
var fileName = input.val(); 

if(fileName) { // returns true if the string is not empty 
    input.replaceWith(input.val('').clone(true)); 
} 

ERROR

NotFoundError: Node was not found     
-jquery.min.js:3:0 
+0

你能重現錯誤還是提供更多上下文? – undefined 2015-02-08 20:13:06

回答

2

爲什麼想要做一個clone

只是在做這應該清除該字段:

input.val(''); 

下面是一個小提琴證明:

http://jsfiddle.net/kcbc701c/

編輯:

呀,可能有問題與上述在較舊的瀏覽器中,這是值得測試的,但對於我在現代瀏覽器中可用的工作,而您陳述的其他選項在Firefox中不起作用...

這裏既如此,你可以測試一個小提琴:http://jsfiddle.net/frrc7bLy/

+0

是的,但錯誤似乎在'find()'部分。 – 2015-02-08 20:15:51

+0

爲什麼使用'find()'而不是爲元素分配一個ID? – krillgar 2015-02-08 20:17:10

+0

@northkildonan不,jQuery非常友善,通常它會處理空集合而不會拋出任何錯誤。 – undefined 2015-02-08 20:20:33

0

雖然jQuery的可能是不夠寬容來處理它,該文件的格式是:在

var input = $("#profile-edit-form").find('input[name="file"]'); 

注意引號圍繞「文件」選擇。

+0

那麼,_this_和_that_選擇器做同樣的事情。 – undefined 2015-02-08 20:25:35

+0

所以你是說jQuery在這方面是寬容的? – bobdye 2015-02-08 20:34:39

+0

這不是無效的選擇器,都是有效的。當屬性的值可以打破選擇器/混淆jQuery的選擇器引擎時,引用很有用。一個例子:''input [name =「group [withBrackets]」]''。 – undefined 2015-02-08 20:37:23