查找chrome中具有未定义值的元素

时间:2011-08-05 21:47:26

标签: javascript jquery google-chrome browser jquery-selectors

我需要在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个元素。

您是否有适用于所有浏览器的解决方案?

3 个答案:

答案 0 :(得分:1)

这有效:

$('#show').click(function(){
    $(':input[type="file"]').each(function(){
        if($(this).val() == this.defaultValue)
        {
            $(this).css('border','2px solid red');
        }
    });
});

不要试图将内容与变量空字符串或'fakepath'等进行比较,只需将其与自己的defaultValue进行比较,您就会知道它是否已填充。

http://jsfiddle.net/AlienWebguy/5sK7T/

答案 1 :(得分:0)

试试这个......

var images = $('#images > div > :file')
              .filter(function() { return $(this).val().length; });

Chrome,Firefox&amp; IE肯定可以获得value(虽然Chrome只会告诉您前缀为C:\fakepath\的文件名。)

What does your browser say?

答案 2 :(得分:0)

我把你的两个答案合并,最后我写了这个:

var images = $(':input[type="file"]').filter(function() { 
    return $(this).val()==this.defaultValue; 
});

这很有效。感谢。