Salut, je cherche a entourer une phrase sélectionner dans un champ de formualire, un peu comme un bbcode et pour cela j'ai un champ textarea
<textarea name="textarea" rows="3" cols="50"></textarea>
Ainsi qu'un bouton
<INPUT TYPE="BUTTON" ID="I_BTN43" NAME="I_BTN41" VALUE="TEST" title="Mets des balises ** devant et après la phrase sélectionné" onclick="Fct_Btn43(value)" >
Et un code javascript qui me permet de faire ce que je veut
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
| function Insert_Tag( where_, tagdeb_, tagfin_){
var Obj = document.getElementById( where_);
if( Obj){
Obj.focus();
if(typeof Obj.selectionStart != 'undefined'){
//-- Position du curseur
var PosDeb = Obj.selectionStart;
var PosFin = Obj.selectionEnd;
//-- Recup. des Chaines
var Chaine = Obj.value;
var szAvant = Chaine.substring( 0 , PosDeb);
var szApres = Chaine.substring( PosFin, Obj.textLength );
//-- Recup. texte selectionne
var szSelect = Chaine.substring( PosDeb, PosFin);
//-- Insertion des tags
Obj.value = szAvant + tagdeb_ + szSelect + tagfin_ + szApres;
//-- Replace le curseur
PosDeb = szAvant.length + tagdeb_.length +szSelect.length;
PosFin = PosDeb;
Obj.setSelectionRange( PosDeb, PosFin);
//-- Replace le Focus
Obj.focus();
}
else{ // IE and consort
var Decal;
//-- Recup. de la selection
var Chaine = document.selection.createRange();
var szSelect = Chaine.text;
Chaine.text = tagdeb_ + szSelect + tagfin_;
Chaine = document.selection.createRange();
//-- Replace le curseur avant balise fin
if( szSelect.length > 0){
//-- Le curseur est en debut de chaine
Decal = tagdeb_.length + szSelect.length;
//-(*)- Supprime les retours Chariot
Decal -= Get_NbrCR( szSelect);
}
else{
//-- Le curseur est en fin de chaine
Decal = -tagfin_.length;
}
//-- Deplace le curseur
Chaine.move('character', Decal);
Chaine.collapse();
Chaine.select();
}
}
}
//-----------------------
function Fct_Btn43(value){
var szTag ="";
szTag = document.getElementById('I_BTN43').value;
Insert_Tag('message', "["+ value +"]", "["+ value +"]");
} |
Tous fonctionne pour ce que je veux faire ! Mais j'ai tout de même deux problèmes
- Lorsque j'ai dépasser le nombre de ligne visible dans le champ de formulaire par exemple 5 lignes et que je fait appel au bouton après avoir sélectionner le dernier mot, le curseur revient tout en haut du champ alors que je souhaiterai qu'il reste en bas
- Je souhaiterai que le bouton ai le nom TEST et que lorsque je clic dessus c'est [**] qui apparait, par exemple si je sélectionne le mot essai dans l'état actuel le script générera [TEST]essai[TEST] et je voudrai [**]essai[**]
Voila j'espère avoir été assez explicite et merci par avance
Partager