2014-04-23 18 views
5

Ten prosty selektor wyszukuje pierwsze pole wprowadzania tekstu pusty w moim formularzu, ale pomija hasło wejść Typ:Znajdź pierwszego pustego pola wprowadzania

$('input:text[value=""]:first').focus(); 

Czy istnieje zgrabny sposób powiedzieć: tekst lub: hasło w powyższym komunikat?

+1

try '$ ('input [type = hasło] [value = ""]: najpierw')' – MilkyWayJoe

+0

Szukasz przetestować cały formularz, a następnie skupić się na pierwszym pustym wejściu? –

+1

Absolutnie Jay, dziękuję – cneeds

Odpowiedz

7
$('input:text[value=""]').add('input:password[value=""]').first().focus(); 

Nie sądzę, że istnieje lepszy sposób. To, co myślałem przed przyjrzeniu @Hari Das odpowiedzi, która ma problem, ale przynosi rozwiązanie alternatywne do mojego umysłu:

$('input:text[value=""],input:password[value=""]').first().focus() 

wybrać ten, który jest bardziej czytelny dla Ciebie.

+0

Twoje powitanie. Proszę też przegłosować :) – ElmoVanKielmo

+0

Ach tak, próbowałem dostać się do twojej drugiej wersji, ale pominąłem dane wejściowe po przecinku. Dlaczego to powoduje problem? Czy wiesz? – cneeds

+0

Zaskakujące trochę. Powinno również działać, ale zaleca się użycie 'input: password' zamiast': password' dla lepszej wydajności. – ElmoVanKielmo

4

Tutaj trochę niestandardowe wyrażenie:

$.expr[':'].is = function(a,b,c){ 
    return $(a).is(c[3]) 
} 

które pozwalają używać is w selektora. Można osiągnąć to, co chcesz z tym:

$('input[value=""]:is([type=text],[type=password]):first') 

Fiddle

+0

Dziękuję Karl, ale nie rozumiem, jak działa wyrażenie niestandardowe :-( – cneeds

+0

Składnia wewnątrz ': is()' jest dokładnie taka sama jak metoda jquery ['.is()'] (http: // api.jquery.com/is/) i zwraca zestaw elementów –

+0

Podobnie jak w odwrotnym kierunku: not()? – cneeds

1

Za pomocą przecinka można wstawić wiele selektora. Działa jak operator OR.

$('input:text[value=""]:first,input:password[value=""]:first') 
+0

Problem polega na tym, że będziesz miał 2 elementy. ': first' musi znajdować się poza selektorem –

1

The widocznym ma pominąć żadnych ukrytych pól, takich jak select2 wejść generowanych automatycznie.

$('input:text[value=""]:visible:first',input:password[value=""]:first) 
+0

może być niewidoczna dla plików typu" password ". Tak więc' $ ('input: text [value = ""]: visible: first, input: password [value = ""]: widoczny: pierwszy ")' – cneeds

Powiązane problemy