我需要在jquery中进行查询,选择值为==“”的元素。我在IE工作,但没有铬。我认为chrome有另一个值作为非定义值。
我的查询:
var images = $('#images>div>input[type=file][value=""]');
if(images.length > 0) // ...
正如您所看到的,有一个类型为file的输入元素,可以让用户有机会附加图像。
<div id="files">
<div><input type="file" name="files" /><input type="button" value="Remove" onclick="removeImage(this)" /></div>
<div><input type="file" name="files" /><input type="button" value="Remove" onclick="removeImage(this)" /></div>
<div><input type="file" name="files" /><input type="button" value="Remove" onclick="removeImage(this)" /></div>
</div>
在IE中,它的效果很好,但在chrome中它总是返回0个元素。
您是否有适用于所有浏览器的解决方案?
答案 0 :(得分:1)
这有效:
$('#show').click(function(){
$(':input[type="file"]').each(function(){
if($(this).val() == this.defaultValue)
{
$(this).css('border','2px solid red');
}
});
});
不要试图将内容与变量空字符串或'fakepath'等进行比较,只需将其与自己的defaultValue
进行比较,您就会知道它是否已填充。
答案 1 :(得分:0)
试试这个......
var images = $('#images > div > :file')
.filter(function() { return $(this).val().length; });
Chrome,Firefox&amp; IE肯定可以获得value
(虽然Chrome只会告诉您前缀为C:\fakepath\
的文件名。)
答案 2 :(得分:0)
我把你的两个答案合并,最后我写了这个:
var images = $(':input[type="file"]').filter(function() {
return $(this).val()==this.defaultValue;
});
这很有效。感谢。