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 :

Supprimer les tags HTML


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 33
    Par défaut Supprimer les tags HTML
    Bonjour,

    Je cherche à supprimer les balises HTML dans le texte d'un textara qunad on y colle quelque chose :

    Code HTML :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form action="post.php" method="post">
       <p><textarea name="zone" id="zone" rows="20" cols="100"></textarea></p>
       <p>
    <input type="submit" value="Envoyer" /></p>
    </form>

    Et le JS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $("#zone").on("paste", function () {
    		  var element = this;
    		  setTimeout(function() {
    	        var sTexte = $(element).val();
    		    alert("sTexte (val) : "+sTexte);
     
    	        var sTexte2 = $(element).text();
    	        alert("sTexte 2 (text) : "+sTexte2);
     
    	        $(element).html(sTexte2);	          
         	  }, 100);
    		});
    Je souhaite enlever les tags html uniquement pour la valeur du textarea, mais je n'arrive pas à appliquer la fonction text() sur cette valeur récupérée avec la fonction val (variable sTexte). La variable sTexte2 ne me renvoie rien, si je lui passe sTexte en paramètres j'ai une erreur du genre 'hiérarchie ne peut être insérée à cet endroit'.

    Aute chose, j'ai vu sur le web que text() retourne la chaine complétement concaténée, sans espaces ni points dans les phrases, le texte devient donc incompréhensible. Comment faire pour suppirmer les balises html proprement en conservant la lisibilité du texte ?

  2. #2
    Membre expérimenté Avatar de elfamine
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 113
    Par défaut
    Bonjour lapaupiette

    Est ce que ca fonctionne mieux comme ca ?
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $("#zone").on("paste", function () {
    		  var element = this;
    		  setTimeout(function() {
    	        var sTexte = $(element).val();
    		    alert("sTexte (val) : "+sTexte);
     
    	        var sTexte2 = $(sTexte).text();
    	        alert("sTexte 2 (text) : "+sTexte2);
     
    	        $(element).html(sTexte2);	          
         	  }, 100);
    		});

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Non, ça ne risque pas de marcher.
    La méthode .text() sert à récupérer le contenu textuel d'une balise, or quand tu modifies un textarea, ce n'est pas le contenu de la balise que tu modifies mais le value, la méthode .text() ne peut donc pas s'appliquer.

    Une solution (à tester), pourrait être de créer un nouvel élément, lui coller le value via la méthode .html() et en récupérer le .text() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $("#zone").on("paste", function () {
    	var element = this;
    	setTimeout(function() {
    	        var sTexte = $(element).val();
     
    	        var sTexte2 = $('<div>').html(sTexte).text();
    	        alert("sTexte 2 (text) : "+sTexte2);
     
    	        $(element).html(sTexte2);	          
         	  }, 100);
    });
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 33
    Par défaut Solution
    Merci pour vos réponses, cela m'a aidé : partant du constat qu'il est impossible d'appliquer la méthode text() à la valeur du textarea, je me suis dit qu'il fallait traiter cette valeur telle qu'elle est intrinsèquement, c'est-à-dire une chaîne de texte, j'ai donc trouvé sur le web une fonction qui supprime les balises html dans la chaîne et ça marche nickel (j'ai testé que sous Firefox, je testerai dans d'autres navigateurs demain mais sur le papier ça ne devrait pas poser de problèmes).

    Voici le code final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    function strip_tags(str){
       t = str.replace(/<(\/)?(html|head|title|body|h1|h2|h3|h4|h5|h6|p|br|hr|pre|em|strong|code|b|i|a|ul|li|ol|dl|dd|table|tr|th|td)([^>]*)>/gi, "");
       t = t.replace(/<(\/)?(iframe|frameset|form|input|select|option|textarea|blackquote|address|object)([^>]*)>/gi, "");
       return t; 
    }  
     
    $(document).ready(function() {
      $("#zone").on("paste", function () {
      var element = this;
      setTimeout(function() {
         var sTexte = $(element).val();
         var t = strip_tags(sTexte);  
         $(element).val(t);	           
       }, 100);     	  
       });	   	   	
    });   
    </script>

  5. #5
    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
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    /*
     * La méthode de Bovino est plus efficace,
     * elle traite tous les cas (pas seulement les tags 
     * 	HTML historiques).
     * 
     * Plus 1 pour Bovino pour l'événement "paste".
     */
    $( "textarea" ).on( "focus blur paste", function(){
    	var jObj = $( this ),
    		jObjDiv = $( "<div/>", {
    			"html" : jObj.val()
    		});
     
    	jObj.val( jObjDiv.text() );
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. Supprimer les TAGs HTML
    Par jfvincent dans le forum Designer
    Réponses: 8
    Dernier message: 25/03/2010, 17h12
  2. [STRUTS] les tags html: et l'attribut "id"
    Par treivse dans le forum Struts 1
    Réponses: 2
    Dernier message: 01/08/2006, 08h20
  3. [RegEx] Supprimer les balises HTML
    Par hisy dans le forum Langage
    Réponses: 4
    Dernier message: 19/03/2006, 17h10
  4. Supprimer les tags HTML
    Par Seth77 dans le forum Langage
    Réponses: 6
    Dernier message: 28/02/2006, 16h48
  5. Comment supprimer les tags RTF
    Par Dnx dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/09/2005, 14h55

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