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 :

[JS][débutant] améliorer la fonction d'un bbcode sur les listes déroulantes


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut [JS][débutant] améliorer la fonction d'un bbcode sur les listes déroulantes
    Salut à tous ,

    J'ai fait un bbcode, et j'utilise entre autre cette fonction avec des listes déroulantes (pour la taille du texte). Or quand je sélectionne un texte que je lui applique une taille par exemple "très grand" ça fonctionne mais ensuite la liste déroulante garde par défaut ce que je vient de sélectionner c'est à dire la taille "très grand". Du coup quand ensuite je veut appliquer cette taille à nouveau, rien n'est inséré.
    Que dois je faire pour que la liste déroulante revienne à sa valeur par défaut (ici "Taille du texte") ?

    Voilà mon code html avec la liste déroulante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		<select name="taille_texte" class="taille_texte"  onchange="javascript:bbcode('[taille=' + this.value + ']', '[/taille]','textarea')">
    			<option selected="selected">Taille du texte</option>
    			<option value="tres_petit">Très petit</option>
    			<option value="plus_petit">Plus petit</option>
    			<option value="petit">Petit</option>
    			<option value="normal">Normal</option>
    			<option value="grand">Grand</option>
    			<option value="plus_grand">Plus grand</option>
    			<option value="tres_grand">Très grand</option>
    		</select>
    voilà ma fonction javascript :
    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
    function bbcode(text1,text2,champ)
    	{
    		var tag = document.getElementById(champ);
     
     
    		if(document.selection)
    			{ // IE
    				var str = document.selection.createRange().text;
    				tag.focus();
    				var sel = document.selection.createRange();
     
    				if(text2 != "")
    					{
    						if(str == "")
    							{
    								sel.text = sel.text + text1 + text2;
    								sel.moveStart("character", -text2.length);
    								sel.moveEnd("character", -text2.length);
    								sel.select();
    							 }
    						 else
    							sel.text = text1 + sel.text + text2;
    					}
    				else
    				 sel.text = sel.text + text1;
    			}
     
     
    		else if(tag.selectionStart || tag.selectionStart == 0)
    			{ // Moz
    				if(tag.selectionEnd > tag.value.length)
    				 tag.selectionEnd = tag.value.length;
     
    				var firstPos = tag.selectionStart;
    				var secondPos = tag.selectionEnd + text1.length;
    				var contenuScrollTop = tag.scrollTop;
     
    				tag.value = tag.value.slice(0,firstPos)	+ text1 + tag.value.slice(firstPos);
    				tag.value = tag.value.slice(0,secondPos) + text2 + tag.value.slice(secondPos);
     
    				tag.selectionStart = firstPos + text1.length;
    				tag.selectionEnd = secondPos;
    				tag.focus();
    				tag.scrollTop = contenuScrollTop;
    			}
     
     
    		else
    			{ // Opera
    				var sel = document.hop.contenu;
    				var inst = countInstances(text1,text2);
    				if(inst%2 != 0 && text2 != "")
    				 sel.value = sel.value + text2;
    				else
    				 sel.value = sel.value + text1;
    			}
    	}
    Merci d'avance pour votre aide !

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 139
    Points
    11 139
    Par défaut
    bonjour,

    ajoute un paramètre à ta fonction bbcode()

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <select name="taille_texte" class="taille_texte"  onchange="bbcode('[taille=' + this.value + ']', '[/taille]','textarea', this)">
    (le terme javascript est inutile).

    Puis dans ton code JS :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function bbcode(text1, text2, champ, liste)
    {
        liste.options[0].selected = true;  //l'option 0 est selectionnee
     
        var tag = document.getElementById(champ);
     
        if(document.selection)
        {
             ...........

  3. #3
    Invité
    Invité(e)
    Par défaut
    merci à vous deux, mon problème est résolu, j'ai testé sous Firefox, IE6, IE7, et Opera ça fonctionne nickel merci

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

Discussions similaires

  1. [Débutant] Faire une boite qui s'affiche sur les autres
    Par Destiny dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 21/08/2007, 09h40
  2. Réponses: 17
    Dernier message: 23/05/2007, 14h57
  3. Réponses: 6
    Dernier message: 09/01/2007, 11h38
  4. bbcode dans une liste déroulante
    Par spirou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/08/2006, 19h10
  5. Recherche fonction sur les listes
    Par becks dans le forum Général Python
    Réponses: 5
    Dernier message: 05/05/2006, 16h11

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