2011-08-16 11 views
7

Czy istnieje sposób, że mogę wybrać textarea takie, że $('#id_of_textarea').val() w jQuery będzie ''? Próbowałem użyć :empty. Widziałem, że CSS zapewnia sposób wybierania pustych danych wejściowych, ponieważ tekst jest w atrybucie value ([value=""]). Czy istnieje atrybut dla tekstu w obszarze tekstowym?Czy mogę wybrać puste teksty z CSS?

Szukam selektora, który będzie działał z CSS, a nie tylko jQuery.

Odpowiedz

12

Najlepsze rozwiązanie, jakie przychodzi mi do głowy, to obejście CSS 3. Ustaw pole na wymagane (i anuluj je, jeśli to konieczne, w razie potrzeby). Następnie można użyć

textarea:invalid { /* style here... probably want to remove box-shadow and such */ } 
+1

http://jsfiddle.net/7YdP5/ Awesome, który działa w chrome. –

+0

Niesamowite! Działa również w Safari. I Firefox. Opiera się na standardach, choć trochę zmienia moją logikę. –

+0

@Ktash Sprytnie obejść. Bardzo pomocne! –

-3

Możesz użyć pseudo-klasy css .

Zobacz przykład w dokumencie jsfiddle.

W przykładzie znajduje się przycisk do dynamicznego dodawania nowych pustych tekstów do DOM, dzięki czemu można zauważyć, że nowe elementy również zostaną dotknięte pseudoklasą.

Kod w przykładzie badano w Firefox 5.0, Opera 11.50 i chromu 12.

Ponadto, można zobaczyć dobry opis dla: pusty pseudo-klasy here.

+5

Zobacz komentarz na temat drugiej osoby, która to zasugerowała. Działa tylko początkowo, a nie tylko raz. – Ktash

+0

Okey, nie widziałem tego komentarza, dziękuję za wskazanie;) – diosney

-2

dla tych, którzy są przy użyciu angularjs, można użyć ng-class w celu dodać klasę do pola tekstowego, aby wiedzieć, czy jest pusty czy nie.

HTML:

<textarea ng-model="myForm.myTextArea" 
      ng-class="(myForm.myTextArea.length)?'not_empty':'empty'"> 
</textarea> 

CSS:

textarea.empty { 
    background-color:red; 
} 
textarea.not_empty { 
    background-color:blue; 
} 

Oto jsfiddle.

+0

Zgodnie z moimi testami, jQuery '.val()' odzwierciedla aktualną treść tekstową, podczas gdy jQuery '.text()' odzwierciedla tekst między znacznikami w oryginalnym HTML. Ponadto, selektor CSS ': empty' sprawdza tekst pomiędzy znacznikami w oryginalnym kodzie HTML (jak jQuery' .text() '). Selektor CSS '[value =" "]' nie wydaje się działać w ogóle. Patrz [jsfiddle] (http://jsfiddle.net/Anr6U/19/) –

Powiązane problemy