2012-02-12 4 views
1

Использование jquery, как я могу найти первый div, содержащий вход без значения?jquery - найти первый div, содержащий пустой ввод

<div class="field"> 
    <input type="text" value="12"> 
</div> 
<div class="field"> 
    <input type="text" value="13"> 
</div> 
<div class="field"> 
    <input type="text"> 
</div> 
<div class="field"> 
    <input type="text"> 
</div> 

$('.field input').filter('text[value=""]').parent().addClass('first_empty') 
+0

$ ('вход div.field') .filter (» input: text [value = ""] ') .filter (': first ') .parent(). css (' background-color ',' green '); –

ответ

4

Вы были так близко. Добавьте элемент в селектор атрибутов, или ':text[value=""]' также будет работать. DEMO

$('.field :input').filter('input:text[value=""]') 
        .parent(':first') 
        .addClass('first_empty'); 
+0

в этой демонстрации фактически выбирает все divs, у которых есть пустые входы, а не только первый –

+0

Да, недосмотр с моей стороны. Исправлена! – shaunsantacruz

+0

@alpacalips Есть ли способ расширить эту проверку, чтобы рассмотреть пустые пробелы? Я имею в виду, выбирая те входы, которые имеют только пробелы в значении? –

2

селекторы не будет работать, так как пользовательский ввод типирование влияет на valueсвойство, а не атрибут value.

Вам нужно что-то вроде этого (я пишу это в простых JS, потому что я не использую JQuery):

function findFirstEmptyInput() { 
    var qsa = document.querySelectorAll(".field input"), l = qsa.length, i; 
    for(i=0; i<l; i++) { 
     if(qsa[i].value == '') return qsa[i]; 
    } 
    return false; 
} 
+1

+1 для указания разницы между атрибутом и свойством. – shaunsantacruz

+0

-1 для не использования jQuery, как запросил автор. – nopuck4you

+0

Я получил +5 на днях за предоставление CSS-решения вместо использования jQuery. Пожалуйста, пересмотрите свой взгляд на жизнь. –