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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    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 expérimenté 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
    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 confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    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 expérimenté 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
    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 confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

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

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    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

+ 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