2010-11-05 30 views
35

Estoy tratando de determinar si un área de texto está vacío si un usuario elimina lo que ya está rellenado previamente en el área de texto mediante jQuery.jQuery detectar si textarea está vacío

¿De todos modos para hacer esto?

Esto es lo que tengo y no su trabajo

$(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' es un nombre de variable real en su código o se olvidó de envolverlo en delimitadores de cadena? p.ej. '$ (" textarea "). live (...)'. Lo que tienes debe funcionar, de lo contrario. tuviste algun error? –

+0

'textarea' es un nombre de variable. Y no estoy obteniendo ningún error ... Casi tengo que vincular el evento keydown al área de texto – dennismonsewicz

+0

si 'textarea' no es un selector, debería usar' bind' en lugar de 'live'. Ver http://api.jquery.com/live/#caveats –

Respuesta

2

Sólo se necesita para obtener el valor de la TexBox y ver si tiene algo en él:

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

'.length' es un número, no una función. –

+0

¿Val() trim? Si no, cortaría el espacio en blanco por si acaso. –

+0

thx, typo ... arreglado. –

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

Usted también puede usar $.trim para asegurarse de que el elemento no contenga solo espacios en blanco:

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

funciona en firefox, no funciona en cromo – PUG

+0

@jaminator: funciona bien para mí, no hay un código incompatible. Si lo has probado y no funciona, es probable que el problema esté en otro lugar de tu código. –

+0

dosent trabajo en cromo. – Dementic

0

Para saber si el área de texto está vacío, echamos un vistazo al contenido del texto de texto y si hay un carácter sincrónico que se encuentra no está vacío.

Probar:

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

$(#textareaid) nos consigue el objeto jQuery área de texto. $(#textareaid).get(0) nos consigue el nodo dom. También podríamos usar document.getElmentById(textareaid) sin el uso de jQuery. .textContent nos da el contenido de texto de ese elemento dom. Con .length podemos ver si hay algún personaje presente. Por lo tanto, el área de texto está vacío en caso de que no haya caracteres dentro.

+0

.text() no es una función – mghaoui

+0

@mghaoui: thx, corregido – Thariama

+0

Podría por favor [editar] en una explicación de por qué este código responde ¿la pregunta? Se desaconsejan las respuestas de solo código porque no enseñan la solución. – Scimonster

1

Aquí está mi código de trabajo

respuesta de
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

No detectará pegar, cortar, soltar, etc. Pruebe [mi complemento] (http://whattheheadsaid.com/projects/input-special-event) para obtener una mejor solución. –

+0

Gracias por la ayuda sugerencia hombre! Voy a analizar este plugin ... parece una solución mucho mejor que la que estoy haciendo – dennismonsewicz

+0

El enlace @AndyE proporcionado está muerto. –

0

Andy E me ayudó a conseguir la forma correcta de trabajar para mí:

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

Este !$(element).val() no coger un área de texto vacío para mí. pero esa cosa de bang (!) funcionaba cuando se combinaba con texto.

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

textarea [value =] no funciona para mí (cromo) –

3

Sé que están mucho más allá de conseguir una solución. Entonces, esto es para otros que vienen a ver cómo otras personas están resolviendo el mismo problema común, como yo.

Los ejemplos en las preguntas y respuestas indican el uso de jQuery y estoy usando .change listener/handler/whatever para ver si mi textarea cambia. Esto debe hacerse cargo de los cambios de texto, manuales cambios automática de texto, etc., para desencadenar la

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

     } 
    }); 
}); 

parece funcionar en todos los navegadores que utilizo. http://jsfiddle.net/Q3LW6/

reciente, el ejemplo más completo:https://jsfiddle.net/BradChesney79/tjj6338a/

Usos e informes .Cambiar(), .blur(), .keydown(), .keyup(), .mousedown(), .mouseup() , .click(), mouseleave() y .setInterval().

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