2010-11-05 37 views
35

Próbuję określić, czy obszar tekstowy jest pusty, jeśli użytkownik usunie to, co jest już wstępnie wypełnione w obszarze tekstowym za pomocą jQuery.jQuery wykryj, czy textarea jest pusta

W każdym razie, aby to zrobić?

To co mam, ale jej nie działa

$(textarea).live('change', function(){ 
      if($(this).val().length == 0) { 
       $(submitButtonClass).addClass('disabled_button'); 
       $(submitButtonClass).removeClass('transSubmit'); 
      } else { 
       $('.disabled_button').addClass('transSubmit').css({ 
        'cursor':'pointer' 
       }).removeClass('disabled_button'); 
      } 
     }); 
+0

jest "textarea" rzeczywistą nazwą zmiennej w twoim kodzie lub zapomniałeś ją zawinąć w ograniczniki ciągów? na przykład '$ (" textarea "). live (...)'. To, co powinieneś, powinno działać, inaczej. Czy masz jakieś błędy? –

+0

'textarea' jest nazwą zmiennej. I nie dostaję żadnych błędów ... Prawie potrzebuję powiązać zdarzenie keydown z textarea – dennismonsewicz

+0

, jeśli 'textarea' nie jest selektorem, powinieneś używać' bind' zamiast 'live'. Zobacz http://api.jquery.com/live/#caveats –

Odpowiedz

2

Trzeba tylko, aby uzyskać wartość texbox i zobaczyć, czy to ma coś w nim:

if (!$(`#textareaid`).val().length) 
{ 
    //do stuff 
} 
+1

'.length' jest liczbą, a nie funkcją. –

+0

Czy wykończenie val()? Jeśli nie, na wszelki wypadek przycinam tę białą przestrzeń. –

+0

thx, literówka ... naprawiona. –

83
if (!$("#myTextArea").val()) { 
    // textarea is empty 
} 

You można również użyć $.trim, aby upewnić się, że element nie zawiera tylko białych znaków:

if (!$.trim($("#myTextArea").val())) { 
    // textarea is empty or contains only white-space 
} 
+3

działa w firefoxie, nie działa w chrome – PUG

+0

@jaminator: działa dobrze dla mnie, nie ma niekompatybilnego kodu. Jeśli go wypróbowałeś i to nie działa, prawdopodobnie problem leży w innym miejscu kodu. –

+0

dosent działa na chrome. – Dementic

0

Aby sprawdzić, czy obszar tekstowy jest pusty, zajrzyj do treści tekstu textarea i jeśli znajduje się jeden znak sinlge, to nie jest on pusty.

Spróbuj:

if ($(#textareaid).get(0).textContent.length == 0){ 
    // action 
} 
//or 
if (document.getElmentById(textareaid).textContent.length == 0){ 
    // action 
} 

$(#textareaid) dostaje nam textarea jQuery obiektu. $(#textareaid).get(0) pobiera nam węzeł dom. Możemy również użyć document.getElmentById(textareaid) bez użycia jQuery. .textContent pobiera nam tekstContent tego elementu dom. Dzięki .length możemy sprawdzić, czy są obecne jakieś znaki. Tak więc tekst jest pusty w przypadku, gdy wewnątrz nie ma żadnych znaków.

+0

.text() nie jest funkcją – mghaoui

+0

@mghaoui: thx, poprawiony – Thariama

+0

Proszę o wyjaśnienie, dlaczego ten kod odpowiada pytanie? Odpowiedzi dotyczące tylko kodu są zniechęcane, ponieważ nie uczą rozwiązania. – Scimonster

1

Oto mój kod roboczych

function emptyTextAreaCheck(textarea, submitButtonClass) { 
     if(!submitButtonClass) 
      submitButtonClass = ".transSubmit"; 

      if($(textarea).val() == '') { 
       $(submitButtonClass).addClass('disabled_button'); 
       $(submitButtonClass).removeClass('transSubmit'); 
      } 

     $(textarea).live('focus keydown keyup', function(){ 
      if($(this).val().length == 0) { 
       $(submitButtonClass).addClass('disabled_button'); 
       $(submitButtonClass).removeClass('transSubmit'); 
      } else { 
       $('.disabled_button').addClass('transSubmit').css({ 
        'cursor':'pointer' 
       }).removeClass('disabled_button'); 
      } 
     }); 
    } 
+1

Nie łapie się wklejania, przycinania, upuszczania itp. Spróbuj [moja wtyczka] (http://whattheheadsaid.com/projects/input-special-event), aby znaleźć lepsze rozwiązanie. –

+0

Dzięki za pomoc sugestii człowieka! Zajrzę do tej wtyczki ... wygląda na znacznie lepsze rozwiązanie niż to, co robię. – dennismonsewicz

+0

Podany link @AndyE jest martwy. –

0

Andy E za odpowiedź pomogła mi uzyskać właściwą drogę do pracy dla mnie:

$.each(["input[type=text][value=]", "textarea"], function (index, element) { 
if (!$(element).val() || !$(element).text()) { 
$(element).css("background-color", "rgba(255,227,3, 0.2)"); 
} 
}); 

Ten !$(element).val() nie złapać pusty textarea dla mnie. ale ta cała huk (!) zadziałała w połączeniu z tekstem.

0
$.each(["input[type=text][value=]", "textarea[value=]"], function (index, element) { 
       //only empty input and textarea will come here 
}); 
+0

textarea [value =] nie działa dla mnie (chrome) –

3

wiem, że jesteś dawno uzyskanie rozwiązania. To jest dla innych, którzy przychodzą, aby zobaczyć, jak inni ludzie rozwiązują ten sam wspólny problem - jak ja.

Przykłady w pytaniu i odpowiedziach wskazują na użycie jQuery i używam .change listener/handler/cokolwiek, aby zobaczyć, czy zmieni się moje pole tekstowe. Powinno to zająć się ręcznymi zmianami tekstu, automatycznymi zmianami tekstu itp., Aby wyzwolić działanie wszystkich przeglądarek, których używam. http://jsfiddle.net/Q3LW6/

Nowsze, bardziej dokładny przykład:https://jsfiddle.net/BradChesney79/tjj6338a/

Zastosowania i raporty .change(), .blur(), .keydown(), .keyup(), .mousedown(), .mouseup() , .click(), mouseleave() i .setInterval().

0
if(!$('element').val()) { 
    // code 
} 
Powiązane problemy