47 votes

JQuery détecter si textarea est vide

Je tente de déterminer si une zone de texte est vide si un utilisateur supprime ce qui est déjà pré-rempli dans la zone de texte en utilisant jQuery.

Y a-t-il un moyen de faire cela ?

Voici ce que j'ai et cela ne fonctionne pas

$(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');
            }
        });

100voto

Andy E Points 132925
if (!$("#myTextArea").val()) {
    // textarea est vide
}

Vous pouvez également utiliser $.trim pour vous assurer que l'élément ne contient que des espaces blancs :

if (!$.trim($("#myTextArea").val())) {
    // textarea est vide ou ne contient que des espaces blancs
}

9voto

IlludiumPu36 Points 565
if (!$.trim($("élément").val())) {

}

5voto

BradChesney79 Points 85

Je sais que vous êtes bien au-delà de trouver une solution. Donc, ceci est pour les autres qui viennent voir comment d'autres personnes résolvent le même problème commun - comme moi.

Les exemples dans la question et les réponses indiquent l'utilisation de jQuery et j'utilise le gestionnaire d'événements .change pour voir si mon textarea change. Cela devrait prendre en compte les changements de texte manuels, les changements de texte automatisés, etc. pour déclencher l'événement.

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

            $('#output').html('D'une certaine manière, votre boîte est signalée comme vide... tristesse.');

        } else {

            $('#output').html('Vos utilisateurs ont réussi à mettre quelque chose dans la boîte !');
            //Aucune garantie que ce n'est pas des absurdités sans esprit, désolé.

        }
    });
});

Semble fonctionner sur tous les navigateurs que j'utilise. http://jsfiddle.net/Q3LW6/. Le message s'affiche lorsque le textarea perd le focus.

Nouvel exemple, plus complet : https://jsfiddle.net/BradChesney79/tjj6338a/

Utilise et signale .change(), .blur(), .keydown(), .keyup(), .mousedown(), .mouseup(), .click(), mouseleave(), et .setInterval().

4voto

Chris Kooken Points 10658

Il vous suffit de récupérer la valeur de la zone de texte et de vérifier si elle contient quelque chose :

if (!$(`#textareaid`).val().length)
{
     //faire quelque chose
}

4voto

Thariama Points 26420

Pour savoir si la zone de texte est vide, nous examinons le contenu textuel de la zone de texte et s'il y a un seul caractère à trouver, elle n'est pas vide.

Essayer :

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

$(#textareaid) nous permet d'obtenir l'objet textarea jQuery. $(#textareaid).get(0) nous permet d'obtenir le nœud dom. Nous pourrions également utiliser document.getElmentById(textareaid) sans utiliser jQuery. .textContent nous obtient le texte de ce élément dom. Avec .length nous pouvons voir s'il y a des caractères présents. Donc, la zone de texte est vide s'il n'y a aucun caractère à l'intérieur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X