2015-02-08 114 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