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

JavaScript Discussion :

Inserer un <p> une seule fois


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Points : 65
    Points
    65
    Par défaut Inserer un <p> une seule fois
    Bonjour
    J'ai des paragraphes XHTML comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <p id="texte1" onclick="transfer(this)" >uuuuu ueryu rtz \n zieryyrytzi ruyziyre uyrizyer eruyui eriutyiier  eruiyt reruhyz eriuyt eruiyo eury eriuh eruiy ierueryt</p>
    <p id="texte2" onclick="transfer(this)" >wwwwwwwwwwwwyu rtz zieryyrytzi ruyziyre uyrizyer eruyui eriutyiier  eruiyt reruhyz eriuyt eruiyo eury eriuh eruiy ierueryt </p>
    <p id="texte3" onclick="transfer(this)" >mmmmmmm zeury ueryu rtz zieryyrytzi ruyziyre uyrizyer eruyui eriutyiier  eruiyt reruhyz eriuyt eruiyo eury eriuh eruiy ierueryt </p>
    Qui renvoient vers une fonction Javascript (faites avec l'aide de Bovino et Space frog) qui inserre dans un textarea d'un simple formulaire xhtml le texte du paragraphe <p> qui vient d'être cliqué.
    J'essaye sans succés de faire en sorte qu'un message s'affiche l'orsque le même message est cliqué deux fois :
    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
    <script type='text/javascript'>
    			  function transfer(obj)
    			  {
    			    if(obj.onclick == "")
    				{
    				   alert('Ce texte a déjà été inserré, voulez-vous l\'inserrer de nouveau ?');
    				}
     
    				else
    				{
    					var saut = '\n';
    					document.getElementById('leMessage').value+=(saut)+obj.innerHTML ;
    					obj.onclick = "";//partie qui permet de ne rentrer le texte qu'une seule fois
    				}
    			  }
     
     
           </script>
    Personne ne saurait pourquoi le message ne s'affiche pas ?

  2. #2
    Membre actif Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Points : 219
    Points
    219
    Par défaut
    Le problème est que tu fais :
    Citation Envoyé par glove
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    obj.onclick = "";
    Donc la prochaine fois que tu cliqueras sur le <p> il fera ce qu'il y a dans le onclick, à savoir "", rien et non ta fonction transfert.

    Voici une façon de procéder :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <p id="texte1" onclick="transfer(this)" >uuuuu ueryu rtz \n zieryyrytzi ruyziyre uyrizyer eruyui eriutyiier  eruiyt reruhyz eriuyt eruiyo eury eriuh eruiy ierueryt</p>
    <p id="texte2" onclick="transfer(this)" >wwwwwwwwwwwwyu rtz zieryyrytzi ruyziyre uyrizyer eruyui eriutyiier  eruiyt reruhyz eriuyt eruiyo eury eriuh eruiy ierueryt </p>
    <p id="texte3" onclick="transfer(this)" >mmmmmmm zeury ueryu rtz zieryyrytzi ruyziyre uyrizyer eruyui eriutyiier  eruiyt reruhyz eriuyt eruiyo eury eriuh eruiy ierueryt </p>
     
    <form>
    	<textarea id="maTxtArea" cols="50" rows="10"></textarea>
    </form>

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function transfer(obj){
    	var regexp=new RegExp(addslashes(obj.innerHTML));
    	if(regexp.test(document.getElementById("maTxtArea").value)){
    		if(confirm('Ce texte a d\351j\340 \351t\351 inserr\351, voulez-vous l\'inserrer de nouveau ?'))
    			document.getElementById("maTxtArea").value+=obj.innerHTML;
    	}else
    		document.getElementById("maTxtArea").value+=obj.innerHTML;
    }
    function addslashes(str){
        return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0");
    }

    Au passage, les accents en JavaScript ne s'écrivent pas directement
    \350->è
    \351->é
    etc.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par k1rby Voir le message
    Donc la prochaine fois que tu cliqueras sur le <p> il fera ce qu'il y a dans le onclick, à savoir "", rien et non ta fonction transfert.
    Mais oui bien sur, t'es génial merci!

    Je me penche sur le code que tu m'as donné, le temps d'arriver à le comprendre.

  4. #4
    Membre actif Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Points : 219
    Points
    219
    Par défaut
    Oups, j'ai édité le code JS, j'avais laissé un alert() qui n'avait rien à faire là ^^'

    Sinon ben tout ce que je fais c'est créer une expression régulière à partir du contenu du <p> et je regarde si cette chaine se trouve dans la textarea, si elle y est je fais un confirm (équivalent d'un alert avec possibilité de répondre "oui" ou "annuler"), si c'est "oui" je réinsère à la suite, sinon je ne fais rien. Et si le contenu du <p> n'était pas déjà dans la textarea, je l'y rajoute.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Points : 65
    Points
    65
    Par défaut
    OKAY, super.
    Grace à toi j'ai appris pas mal de chose d'un coup.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Points : 65
    Points
    65
    Par défaut
    C'est encore moi .
    Il y a deux choses que je ne comprend pas du tout avec la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function addslashes(str){
        return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0");
    }

    return (str+'') c'est quoi ce +'' , ça correspond à quoi?

    replace(/\0/g, "\\0") Pourquoi faut il échapper le signe 0 ce n'est pas un signe spécial pourtant ?

    Merci

  7. #7
    Membre actif Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Points : 219
    Points
    219
    Par défaut
    Alors ça c'est un fonction que j'ai récupéré sur le net par flemme maque de temps pour la faire moi même. C'est juste pour échapper les les quotes et autres antislash dans la regexp qu'on construit sinon ça pose problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Configuration] filtrer le flux sortant une seule fois, en debut de code...
    Par misstinkiete dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 13/10/2005, 21h20
  2. [DLL] Ma DLL execute le Timer une seul fois !
    Par TOTO32 dans le forum Langage
    Réponses: 14
    Dernier message: 13/08/2005, 20h37
  3. Réponses: 1
    Dernier message: 19/03/2005, 22h47
  4. Réponses: 18
    Dernier message: 10/02/2005, 13h22
  5. Réponses: 2
    Dernier message: 30/11/2004, 11h48

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