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 :

Javascript et éléments pour bbcode


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Javascript et éléments pour bbcode
    Bonjour,

    J'ai un formulaire comprenant plusieurs champs contenu.

    Soit contenu1, contenu2, contenu3 et contenu4 tous en textarea dans lesquels je voudrais via des bouton faire des mises en formes avec bbcode.

    Pour pouvoir y introduire des bbcode via des boutons j'ai mis dans mon head le code suivant

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <script language="Javascript">
    var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;
    var regexp = new RegExp("[\r]","gi");
     
    function storeCaret(selec)
    {
    	if (isMozilla) 
    	{
    	// Si on est sur Mozilla
     
    		oField = document.forms['contenu'].elements['contenu1'];
     
    		objectValue = oField.value;
     
    		deb = oField.selectionStart;
    		fin = oField.selectionEnd;
     
    		objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
    		objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
    		objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );
     
    	//	alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")");
     
    		oField.value = objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]" + objectValueFin;
    		oField.selectionStart = strlen(objectValueDeb);
    		oField.selectionEnd = strlen(objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]");
    		oField.focus();
    		oField.setSelectionRange(
    			objectValueDeb.length + selec.length + 2,
    			objectValueDeb.length + selec.length + 2);
    	}
     
     
    	else
    	{
    	// Si on est sur IE
     
    		oField = document.forms['contenu'].elements['contenu1'];
    		var str = document.selection.createRange().text;
     
    		if (str.length>0)
    		{
    		// Si on a selectionné du texte
    			var sel = document.selection.createRange();
    			sel.text = "[" + selec + "]" + str + "[/" + selec + "]";
    			sel.collapse();
    			sel.select();
    		}
    		else
    		{
    			oField.focus(oField.caretPos);
    		//	alert(oField.caretPos+"\n"+oField.value.length+"\n")
    			oField.focus(oField.value.length);
    			oField.caretPos = document.selection.createRange().duplicate();
     
    			var bidon = "%~%";
    			var orig = oField.value;
    			oField.caretPos.text = bidon;
    			var i = oField.value.search(bidon);
    			oField.value = orig.substr(0,i) + "[" + selec + "][/" + selec + "]" + orig.substr(i, oField.value.length);
    			var r = 0;
    			for(n = 0; n < i; n++)
    			{if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
    			pos = i + 2 + selec.length - r;
    			//placer(document.forms['contenu'].elements['contenu'], pos);
    			var r = oField.createTextRange();
    			r.moveStart('character', pos);
    			r.collapse();
    			r.select();
     
    		}
    	}
    }
     
     
     
    </script>
    mais le oField = document.forms['contenu'].elements['contenu1']; ne reconnait que l'élément contenu1 et je voudrais savoir comment faire pour qu'les boutons sur contenu2, contenu3 et contenu4 fonctionnent pour ces champs propres.

    Je ne suis pas un spécialiste de javascript.

    Quelqu'un pourrait-il m'aider s'il vous plaît. Merci par avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Salut,

    Tu as le code pour contenu1, tu veux que le même code s'éxécute pour contenu2, 3 et 4. Pas besoin d'être un spécialiste pour savoir qu'une simple boucle for fait l'affaire ici.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Bonjour Sylvain PV,

    Merci pour cette réponse.

    Mais outre le fait de savoir que la formule générale pour for est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (valeur initiale ; condition; progression) {instruction}
    Je ne sais où mettre la boucle et par quoi remplacer les valeurs dans les parenthèses.

    Merci pour ton aide.

  4. #4
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Rien ne t'empêche à l'appel de la fonction de rajouter un paramètre indiquant à quelle zone de saisie elle doit s'appliquer.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    J'ai écrit une fonction pour chaque contenu. Résolu par moi-même. Mais merci à ceux qui ont cherché à m'aider.

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    Bonjour,
    J'ai écrit une fonction pour chaque contenu
    ne me dis pas que tu as osé

    La réponse t'a été donnée par Bovino
    Rien ne t'empêche à l'appel de la fonction de rajouter un paramètre indiquant à quelle zone de saisie elle doit s'appliquer.
    en d'autres termes l'entête de ta fonction devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function storeCaret(id_textarea, selec){
      var oField = document.getElementById( id_textarea); // récup. objet où l'on va appliquer le BBcode
      // la suite du code
    }
    et l'appel
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button onclick="storeCaret('contenu1', 'b');">Gras<button><!-- par exemple -->

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

Discussions similaires

  1. [PHP-JS] Interaction entre javascript et php pour XUL
    Par WalidNat dans le forum Langage
    Réponses: 2
    Dernier message: 25/05/2011, 13h26
  2. Recherche Javascript coder confirmé pour un projet
    Par jac3n dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 22/11/2006, 15h01
  3. [DOM] JavaScript et DOM pour modifier du texte
    Par flykev dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 18/07/2006, 15h04
  4. [JavaScript] Taile minimale pour une fenêtre web
    Par efficks dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/12/2005, 14h57

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