2010-11-05 25 views
35

Ich versuche zu bestimmen, ob ein Textfeld leer ist, wenn ein Benutzer löscht, was bereits im Textbereich mit jQuery ausgefüllt ist.jQuery erkennen, wenn Textarea leer ist

Wie auch immer, dies zu tun?

Dies ist, was ich habe, und seine Arbeit nicht

$(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

ist 'textarea' ein tatsächlicher Variablenname in Ihrem Code oder haben Sie vergessen, ihn in String-Trennzeichen zu schreiben? z.B. '$ (" textarea "). live (...)'. Was du hast, sollte sonst funktionieren. Haben Sie Fehler? –

+0

'textarea' ist ein Variablenname. Und ich bekomme keine Fehler ... Ich muss das Keydown-Ereignis fast an die Textstelle – dennismonsewicz

+0

binden, wenn 'textarea' kein Selektor ist, sollten Sie' bind' anstelle von 'live' verwenden. Siehe http://api.jquery.com/live/#caveats –

Antwort

2

Sie müssen nur den Wert des texbox und sehen, ob es irgendetwas in ihm hat:

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

'' length' 'ist eine Nummer, keine Funktion. –

+0

Wird val() getrimmt? Wenn nicht, würde ich den nachgestellten Leerraum für alle Fälle abschneiden. –

+0

thx, Tippfehler ... behoben. –

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

Sie Sie können auch $.trim verwenden, um sicherzustellen, dass das Element nicht nur Leerstellen enthält:

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

funktioniert in Firefox, funktioniert nicht in Chrom – PUG

+0

@jaminator: funktioniert gut für mich, es gibt keinen inkompatiblen Code. Wenn Sie es ausprobiert haben und es nicht funktioniert, liegt das Problem wahrscheinlich an anderer Stelle in Ihrem Code. –

+0

dosent arbeiten auf Chrom. – Dementic

0

Um herauszufinden, ob der Textbereich leer ist, sehen wir uns den Inhalt des Textbereiches an und wenn es ein einzelnes Zeichen gibt, ist es nicht leer.

Versuchen:

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

$(#textareaid) bringt uns das Textfeld jQuery-Objekt. $(#textareaid).get(0) ruft uns den Dom-Knoten. Wir könnten auch document.getElmentById(textareaid) ohne die Verwendung von jQuery verwenden. .textContent ruft uns den textContent dieses dom-Elements ab. Mit .length können wir sehen, ob irgendwelche Zeichen vorhanden sind. Das Textfeld ist leer, falls keine Zeichen vorhanden sind.

+0

.text() ist keine Funktion – mghaoui

+0

@mghaoui: thx, korrigiert – Thariama

+0

Könnten Sie bitte [edit] in einer Erklärung, warum dieser Code antwortet die Frage? Code-only-Antworten werden abgeraten, weil sie die Lösung nicht lehren. – Scimonster

1

Hier ist mein Arbeits Code

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

Fängt kein Einfügen, Schneiden, Fallenlassen usw. Versuchen Sie [mein Plugin] (http://whatteheadsaid.com/projects/input-special-event) für eine bessere Lösung. –

+0

Danke für den Hilfevorschlag Mann! Ich werde in dieses Plugin schauen ... sieht aus wie eine viel bessere Lösung als das, was ich tue – dennismonsewicz

+0

Der Link @AndyE zur Verfügung gestellt ist tot. –

0

Andy E Antwort hat mir geholfen, die richtige Art und Weise zu bekommen, für mich zu arbeiten:

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

Dieses !$(element).val() nicht ein leeres Textfeld für mich fangen. aber dieses ganze Ding (!) funktionierte, wenn es mit Text kombiniert wurde.

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

textarea [value =] funktioniert nicht für mich (chrome) –

3

Ich weiß, dass Sie lange Vergangenheit immer eine Lösung. Also, das ist für andere, die mitkommen, um zu sehen, wie andere Leute das gleiche Problem lösen - wie ich.

Die Beispiele in den Fragen und Antworten zeigt die Verwendung von jQuery und ich benutze die .change Listener/Handler/was auch immer, um zu sehen, wenn meine Textbereich ändert. Dies sollte der manuellen Textänderungen kümmern, automatisierte Textänderungen usw. auszulösen die

//pseudocode 
$(document).ready(function() { 
    $('#textarea').change(function() { 
     if ($.trim($('#textarea').val()).length < 1) { 

      $('#output').html('Someway your box is being reported as empty... sadness.'); 

     } else { 

      $('#output').html('Your users managed to put something in the box!'); 
      //No guarantee it isn't mindless gibberish, sorry. 

     } 
    }); 
}); 

scheint auf allen Browsern zu arbeiten ich verwende. http://jsfiddle.net/Q3LW6/

Neuere, gründlichere Beispiel:https://jsfiddle.net/BradChesney79/tjj6338a/

Verwendung und Berichte .change(), .blur(), .keydown(), .keyup(), .mousedown(), .mouseup() , .click(), mouseleave() und .setInterval().

0
if(!$('element').val()) { 
    // code 
}