2010-04-24 11 views
37

Poniższy kod służy do włączania przycisku przesyłania, gdy użytkownik kliknie w polu tekstowym. Działa, ale staram się również, aby był włączony, tylko jeśli w polu jest co najmniej jedna postać. Próbowałem owijać:jquery - sprawdź długość pola wejściowego?

if ($(this).val().length > 1) 
{ 

} 

Ale to nie działało ... Jakieś pomysły?

$("#fbss").focus(function() { 
    $(this).select(); 
    if ($(this).val() == "Default text") { 
     $(this).val(""); 
     $("input[id=fbss-submit]").removeClass(); 
     $("input[id=fbss-submit]").attr('disabled', false); 
     $("input[id= fbss-submit]").attr('class', '.enableSubmit'); 
     if ($('.charsRemaining')) { 
      $('.charsRemaining').remove(); 
      $("textarea[id=fbss]").maxlength({ 
       maxCharacters: 190, 
       status: true, 
       statusClass: 'charsRemaining', 
       statusText: 'characters left', 
       notificationClass: 'notification', 
       showAlert: false, 
       alertText: 'You have exceeded the maximum amount of characters', 
       slider: false 
      }); 

     } 
    } 
}); 
+1

> 1 oznacza więcej niż 1. Jeśli chcesz co najmniej 1, należy użyć> = Ponadto, dlaczego używasz takiego dziwne składni selektora do wybierania na podstawie identyfikatora ? Dlaczego nie użyć składni $ ("# ID")? –

+0

Przyszedłem tutaj, szukając wartości długości jquery i pomyślałem, że warto zauważyć, że nie trzeba już uciekać się do ustawienia wartości, aby uzyskać domyślny tekst, atrybut zastępczy wykonuje teraz to zadanie (html5), co oznacza, że ​​wartość nie jest ustawiona, więc można po prostu sprawdzić value! == 0. – Chris

Odpowiedz

82

To nie działa, ponieważ, sądząc po resztę kodu, początkowa wartość wprowadzania tekstu jest „text Default” - co jest więcej niż jeden znak, a więc warunek if jest zawsze prawdziwe .

Najprostszym sposobem, aby to działało, to wydaje mi się, ma konto w tym przypadku:

var value = $(this).val(); 
    if (value.length > 0 && value != "Default text") ... 
+4

value.length> 0 – Ben

+1

Tak, masz rację. Poprawiono odpowiedź. –

19

Jeśli masz na myśli, że chcesz włączyć złożyć po użytkownik wpisany co najmniej jeden znak , musisz załączyć kluczowe zdarzenie, które sprawdzi to za Ciebie.

Coś jak:

$("#fbss").keypress(function() { 
    if($(this).val().length > 1) { 
     // Enable submit button 
    } else { 
     // Disable submit button 
    } 
}); 
Powiązane problemy