Найти элементы, которые не имеют определенного значения в Chrome - PullRequest
0 голосов
/ 06 августа 2011

Мне нужно сделать запрос в 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 ]

1 голос
/ 06 августа 2011

Это работает:

$('#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/

0 голосов
/ 06 августа 2011

Я объединяю ваши оба ответа и, наконец, я написал это:

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

Это прекрасно работает. Спасибо.

0 голосов
/ 06 августа 2011

Попробуйте это ...

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

Chrome, Firefox и IE определенно могут получить value (хотя Chrome сообщит вам только имя файла с добавлением C:\fakepath\).

Что говорит ваш браузер?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...