Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JS] Problème de retour au début du formulaire (bbcode)

Sujet résolu
    11 mai 2010 à 17:43:21

    Bonjour,

    Je rencontre un problème assez génant avec mon script de bbcode. Lorsque j'insère une balise (par ex: [g][/g]), le curseur reste bien entre les deux balises, mais je retourne au début du formulaire. Je suis obligé de redescendre la barre déroulante du formulaire (dans les longs textes) pour pouvoir continuer à insérer des balises.

    Je ne sais pas si j'ai été clair. :euh:
    Je voudrais que mon texte ne bouge pas lorsque j'insère des balises.

    Voici mon code JS :
    function bbcode(bbdebut, bbfin)
    {
    var input = window.document.formulaire.message;
    input.focus();
    if(typeof document.selection != 'undefined')
    {
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = bbdebut + insText + bbfin;
    range = document.selection.createRange();
    if (insText.length == 0)
    {
    range.move('character', -bbfin.length);
    }
    else
    {
    range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
    }
    range.select();
    }
    else if(typeof input.selectionStart != 'undefined')
    {
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
    var pos;
    if (insText.length == 0)
    {
    pos = start + bbdebut.length;
    }
    else
    {
    pos = start + bbdebut.length + insText.length + bbfin.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
    }
     
    else
    {
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos))
    {
    pos = prompt("insertion (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length)
    {
    pos = input.value.length;
    }
    var insText = prompt("Veuillez taper le texte");
    input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
    }
    }
    
    function smilies(img)
    {
    	var input = window.document.formulaire.message;
    	input.focus();
    	var pos;
    	pos = input.selectionStart;
    	input.value = input.value.substr(0, pos) + img + input.value.substr(pos);
    	
    	input.selectionStart = pos + img.length;
    	input.selectionEnd = pos + img.length;
    	
    }
    


    Merci par avance pour votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
    Philisto.fr : site d'Histoire pour lycéens, étudiants, ... - Paul de Cassagnac (livre)
      11 mai 2010 à 18:24:40

      Essaye comme ça :

      Mets var scr=input.scrollTop; entre les lignes 3 et 4.

      Et input.scrollTop=scr; entre les lignes 54 et 55.



      Sinon, un code indenté proprement serait franchement plus agréable à lire.
      • Partager sur Facebook
      • Partager sur Twitter
        11 mai 2010 à 20:32:07

        Ca marche, merci beaucoup ! :)

        Désolé pour l'indentation.
        • Partager sur Facebook
        • Partager sur Twitter
        Philisto.fr : site d'Histoire pour lycéens, étudiants, ... - Paul de Cassagnac (livre)

        [JS] Problème de retour au début du formulaire (bbcode)

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown