IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Verifier si une balise est vide


Sujet :

jQuery

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 35
    Points
    35
    Par défaut Verifier si une balise est vide
    Bonjour,

    comment vérifier s'il vous plait qu'une balise est vide en jquery
    si <p id="confirm_popup"></p> => vide
    ou <p id="confirm_popup">votre message a été envoyé</p> => pas vide.

    je veux tester afin d'afficher une boite de dialogue.

    merci

  2. #2
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('p#confirm_popup').text().length = 0 //alors c'est vide
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('p#confirm_popup:empty').length != 0 //alors c'est vide
    Bien cordialement,

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    innerHTML text n'est pas crossbrowser

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 35
    Points
    35
    Par défaut
    Merci à vous. j'ai utilisé ta première solution Mahefasoaµ.

    a+

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut


    donc en gros si on te donne le choix entre une voiture avec un volant et une autre sans volant tu prends celle sans le volant ...
    Au moins t'es sur de te payer un mur ...

  6. #6
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    innerHTML text n'est pas crossbrowser
    La doc jQuery ne dit rien de tel, elle précise juste que le rendu n'est pas le même selon les browsers, c'est tout

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    oui don cplutot .html() que .text() ... enfin tout dépend de ce que l'on entend par vide ...

  8. #8
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    text() : http://api.jquery.com/text/

    Unlike the .html() method, .text() can be used in both XML and HTML documents. The result of the .text() method is a string containing the combined text of all matched elements. (Due to variations in the HTML parsers in different browsers, the text returned may vary in newlines and other white space.)
    Les différences, retours à la ligne et espaces blancs sont généralement entre les mots.

    Je crois donc que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('p#confirm_popup').text().length
    est une solution valable ou mieux pour éliminer d'éventuels espaces blancs avant ou après le texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $.trim($('p#confirm_popup').text()).length

  9. #9
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut à tous,

    permettez que je pinaille un peu: ^^


    $('p#confirm_popup').text().length
    vu que c'est un id et à moins d'avoir une raison particulière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#confirm_popup').text().length
    me parait plus approprié.


    pour ce qui est de la notion de vide effectivement tout dépend de ce qu'on entend par 'vide':
    -avec .text().length: (soit: le contenu texte hors balises)
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <p id="confirm_popup"><span></span></p>
    renvoie : 0, même si la balise n'existe pas.
    remarque: '&lt;' => 1 caractère
    -avec .html().length: (soit: le contenu texte brut avec balises)
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <p id="confirm_popup"><span></span></p>
    renvoie : 13, mais si la balise n'existe pas : arrêt du code.
    -et si effectivement une chaine d'espaces à le sens de vide un trim() est approprié.


    je propose autrement:
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#confirm_popup').contents().length
    qui renvoie 0 uniquement s'il n'y a rien dans la balise, il faut toutefois aussi être sûr de l'existence de celle-ci.


  10. #10
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Pour l'id, vous avez raison, le p est inutile.

    Pour contents (http://api.jquery.com/contents/), je ne suis pas d'accord.

    Get the children of each element in the set of matched elements, including text and comment nodes.
    contents() est l'équivalent de children() (http://api.jquery.com/children/) les commentaires en plus.

  11. #11
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    bonsoir danielhagnoul,

    je ne suis pas d'accord
    pourquoi pas... mais je ne comprends pas l'argumentation, cela m'intéresse d'avoir plus de précision.

    je vois surtout l'avantage qu'il permet de comptabiliser le contenu et à la différence de .children() aussi les chaines textes, ce qui me semble bien répondre à la question puisqu'il est nul uniquement s'il n'y a rien entre les balises.
    je ne vois donc pas ce qui a de contrariant dans ce choix.

  12. #12
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Il suffit de lire la documentation, ou de faire un petit test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <p id="confirm_popup_1"></p>
    <p id="confirm_popup_2"><!-- Un commentaire --></p>
    <p id="confirm_popup_3">
    	Bonjour ! <span style="color:red;">Hello everybody !</span>
    </p>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $(function(){
    	/*
    	 * i = 0 $(item).text().length = 0
    	 * i = 0 $(item).contents().length = 0
    	 * i = 1 $(item).text().length = 0
    	 * i = 1 $(item).contents().length = 1
    	 * i = 2 $(item).text().length = 36
    	 * i = 2 $(item).contents().length = 3
    	 */
    	$("[id^='confirm_popup_']").each(function(i, item){
    		console.log("i = " + i, "$(item).text().length = " + $(item).text().length);
    		console.log("i = " + i, "$(item).contents().length = " + $(item).contents().length);
    	});
    });

  13. #13
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    bonsoir danielhagnoul,

    Citation Envoyé par danielhagnoul
    Il suffit de lire la documentation, ou de faire un petit test :
    merci pour l'exemple. je te rassure, je lis les docs et je poste rarement sans vérifier surtout quand je ne maitrise pas un sujet.

    ton exemple illustre bien mon propos: contents().length est égale à zéro uniquement lorsqu'il n'y a pas de contenu ce qui n'est pas le cas de text().length. cela me parait bien répondre à la question:
    Citation Envoyé par mino26tz
    comment vérifier s'il vous plait qu'une balise est vide en jquery
    si <p id="confirm_popup"></p> => vide
    ou <p id="confirm_popup">votre message a été envoyé</p> => pas vide.
    alors permet moi d'insister: quel pb vois tu à ce choix?

    en revanche je constate que ces méthodes échouent pitoyablement s'il y a des balises qui ne sont pas 'inline' comme <h1> <p> <div> <center>...

  14. #14
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Le problème, l'un compte les pommes et l'autre compte les poires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <p id="confirm_popup_1">
     
    </p>
    <p id="confirm_popup_2"><br/></p>
    <p id="confirm_popup_3">
    	<span></span>
    </p>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /*
     * i = 0 $.trim($(item).text()).length = 0
     * i = 0 $(item).contents().length = 1
     * i = 1 $.trim($(item).text()).length = 0
     * i = 1 $(item).contents().length = 1
     * i = 2 $.trim($(item).text()).length = 0
     * i = 2 $(item).contents().length = 3			 */
    $("[id^='confirm_popup_']").each(function(i, item){
    	console.log("i = " + i, "$.trim($(item).text()).length = " + $.trim($(item).text()).length);
    	console.log("i = " + i, "$(item).contents().length = " + $(item).contents().length);
    });
    Le sujet est clos en ce qui me concerne.

  15. #15
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Citation Envoyé par danielhagnoul
    Le problème, l'un compte les pommes et l'autre compte les poires.
    on est bien d'accord là dessus mais ca peut aussi être des oranges ou bananes, la question est de savoir s'il n'y a rien, pas s'il y a qqc. ;p

    Citation Envoyé par danielhagnoul
    Le sujet est clos en ce qui me concerne.
    aussi pour moi. à chacun d'apprécier la pertinence du choix.
    pour clore je rappellerais que ces solutions ne sont pas valables s'il y a des balises qui ne sont pas 'inline'.


Discussions similaires

  1. verifier si une cellule est vide
    Par escalopepane dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/09/2013, 13h49
  2. verifier si une table est vide
    Par mumu64 dans le forum IHM
    Réponses: 6
    Dernier message: 02/10/2008, 14h12
  3. tester si le résultat d'une requete est vide
    Par monstour dans le forum ASP
    Réponses: 13
    Dernier message: 04/10/2006, 14h14
  4. Tester si une table est vide
    Par rsc dans le forum SQL
    Réponses: 2
    Dernier message: 01/07/2004, 16h25
  5. [JDBC]tester si une table est vide
    Par zozolh2 dans le forum JDBC
    Réponses: 5
    Dernier message: 28/05/2004, 09h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo