Ajouter du texte a la position du curseur dans un textarea

Soyez le premier à donner votre avis sur cette source.

Snippet vu 35 198 fois - Téléchargée 26 fois

Contenu du snippet

Code compatible avec IE et kelkes bugs:
exemple d'une page:

Source / Exemple :


<HTML>
<HEAD>
<TITLE>Insert</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function storeCaret (textEl)
{
if (textEl.createTextRange) 
textEl.caretPos = document.selection.createRange().duplicate();
}
function insertAtCaret (textEl, text)
{
if (textEl.createTextRange && textEl.caretPos)
{
var caretPos = textEl.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
}
else
textEl.value  = text;
}
</SCRIPT>
</HEAD>
<BODY>
<FORM>
<textarea rows="5" name="zonetexte" cols="20"ONSELECT="storeCaret(this);"ONCLICK="storeCaret(this);"ONKEYUP="storeCaret(this);"> C'est le début du texte.</textarea>
<INPUT TYPE="button" STYLE="font-family:courier;" VALUE="Ajouter"
ONCLICK="insertAtCaret(this.form.zonetexte,'LE TEXTE');">
</FORM>
</BODY>
</HTML>

Conclusion :


Code demandé sur le forum de l'editeur javascript

A voir également

Ajouter un commentaire

Commentaires

matrey
Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004

Merci beaucoup, c'est exactement ce dont j'avais besoin !
sasoum
Messages postés
6
Date d'inscription
dimanche 31 mars 2002
Statut
Membre
Dernière intervention
7 février 2003

Comment je pourrais modifier ce code qui est génial, pour mettre en fin rajouter du teste autour du teste selectionner, comme pour mettre en gras un mot spécifique je veut rajouter deux balise autour
cs_Psyk
Messages postés
10
Date d'inscription
mercredi 3 juillet 2002
Statut
Membre
Dernière intervention
30 janvier 2005

Tu peux toujours rechercher sur le net les "UBB codes" et t'inspirer de leur programmation.
TiTan909
Messages postés
1
Date d'inscription
vendredi 30 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2004

C'est génial pour mon site, mais comme tu l'as si bien dit, il ne marche que sous IE, il n'y a pas moyen de le faire fonctionner sous Mozilla ; Netscape?
abdoulax
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012

Tu aurais pu enlever les event sur le texte area:
textEl.focus();
var caretPos = document.selection.createRange().duplicate();
caretPos.text = le_text;
Et pour firefox:
var texteDeb= textEl.value.substring( 0 , textEl.selectionEnd );
var texteEnd= textEl.value.substring( textEl.selectionEnd , textEl.textLength );
textEl.value= texteDeb + " " + le_text + " " + texteEnd;

...

Have fun

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.