2010-11-05 13 views
35

Sto provando a determinare se una textarea è vuota se un utente elimina ciò che è già pre-compilato nella textarea usando jQuery.jQuery rileva se textarea è vuota

In ogni caso per fare questo?

Questo è quello che ho e non il suo lavoro

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

è 'textarea' un nome di variabile effettivo nel codice o hai dimenticato di inserirlo nei delimitatori di stringa? per esempio. '$ ("Textarea"). Vive (...)'. Quello che hai dovrebbe funzionare, altrimenti. Hai errori? –

+0

'textarea' è un nome di variabile. E non ho alcun errore ... Ho quasi bisogno di associare l'evento keydown alla textarea – dennismonsewicz

+0

se 'textarea' non è un selettore, dovresti usare' bind' piuttosto che 'live'. Vedi http://api.jquery.com/live/#caveats –

risposta

2

Hai solo bisogno di ottenere il valore della texbox e vedere se ha qualcosa in esso:

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

'.length' è un numero, non una funzione. –

+0

Val() assetto? Altrimenti, eliminerei lo spazio bianco finale per ogni evenienza. –

+0

thx, typo ... risolto. –

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

È puoi anche utilizzare $.trim per assicurarti che l'elemento non contenga solo spazi bianchi:

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

funziona in firefox, non funziona in chrome – PUG

+0

@jaminator: funziona bene per me, non c'è codice incompatibile. Se lo hai provato e non funziona, è probabile che il problema risieda altrove nel tuo codice. –

+0

lavori dosati su cromo. – Dementic

0

Per scoprire se la textarea è vuota, diamo un'occhiata al contenuto del testo textarea e se c'è un carattere sinlge da trovare non è vuoto.

Prova:

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

$(#textareaid) noi ottiene l'oggetto jQuery textarea. $(#textareaid).get(0) ci ottiene il nodo dom. Potremmo anche usare document.getElmentById(textareaid) senza l'uso di jQuery. .textContent ci ottiene il testo contenuto di quell'elemento dom. Con .length possiamo vedere se ci sono dei personaggi presenti. Quindi la textarea è vuota nel caso in cui non ci siano caratteri all'interno.

+0

.text() non è una funzione – mghaoui

+0

@mghaoui: thx, corretto – Thariama

+0

Potresti per favore [modificare] in una spiegazione del perché questo codice risponde la domanda? Le risposte al solo codice sono scoraggiate, perché non insegnano la soluzione. – Scimonster

1

Ecco il mio codice di lavoro

risposta di
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

Non catturerà incolla, taglia, rilascia, ecc. Prova [il mio plugin] (http://whattheheadsaid.com/projects/input-special-event) per una soluzione migliore. –

+0

Grazie per l'aiuto consiglio man! Vado a cercare in questo plugin ... sembra una soluzione molto migliore di quello che sto facendo – dennismonsewicz

+0

Il link @AndyE fornito è morto. –

0

Andy E mi ha aiutato a ottenere il modo corretto di lavorare per me:

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

Questo !$(element).val() non ho capito una textarea vuoto per me. ma quella cosa del tutto bang (!) funzionava quando combinata con il testo.

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

textarea [value =] non funziona per me (chrome) –

3

So che sei passato lungo ottenere una soluzione. Quindi, questo è per gli altri che vengono a vedere come gli altri stanno risolvendo lo stesso problema comune - come me.

Gli esempi nella domanda e nelle risposte indicano l'utilizzo di jQuery e sto utilizzando il listener/handchange/qualsiasi cosa per vedere se la mia area di testo cambia. Questo dovrebbe prendersi cura di modifiche al testo, manuali automatizzati modifiche al testo, ecc per innescare il

//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. 

     } 
    }); 
}); 

sembra funzionare su tutti i browser che uso. http://jsfiddle.net/Q3LW6/

più recente, ad esempio più approfondita:https://jsfiddle.net/BradChesney79/tjj6338a/

Usi e rapporti .Per passare(), .blur(), .keydown(), .keyup(), .mousedown(), .mouseup() , .click(), mouseleave() e .setInterval().

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