Question

J'ai une zone de texte et une liste. Lorsqu'un utilisateur double-clique sur un élément de la liste, son étiquette doit être insérée dans la zone de texte. Lorsqu'un texte est sélectionné dans textArea, il doit être remplacé. Dans le cas contraire, il suffit de l'insérer dans le texte existant au point d'insertion.

J'ai réussi à obtenir le texte et le reste, je ne parviens tout simplement pas à l'insérer au point d'insertion. Est-ce que quelqu'un sait comment faire cela?

Était-ce utile?

La solution

Ce n’est en réalité pas JavaScript, mais Adobe Flex 3. Merci de votre aide, cela m’a poussé dans la bonne direction. Voici comment cela se fait dans Flex 3:

var caretStart:int = textArea.selectionBeginIndex;
var caretEnd:int = textArea.selectionEndIndex;
textArea.text = textArea.text.substring(0,caretStart)
              + newText
              + textArea.text.substr(caretEnd);

Autres conseils

La réponse acceptée fonctionne parfaitement si vous n'avez pas de formatage HTML existant. Dans mon cas, j'ai inséré un nouveau bouton dans l'éditeur sur lequel l'utilisateur pouvait cliquer pour saisir un mot clé. J'ai continué à perdre tout le formatage HTML jusqu'à ce que je fouille dans la classe actuelle et que je côtoie un objet TextRange:

       public function keyWord_Click(event:Event) : void 
        {

            var caretStart:int = txtEditor.textArea.selectionBeginIndex;
            var caretEnd:int = txtEditor.textArea.selectionEndIndex;
            var newText : String = "[[[KEYWORD]]]";

            var tf:TextRange = new TextRange(txtEditor,true,caretStart,caretEnd);
            tf.text = newText;

        }

La bonne chose à propos de cette approche est que vous pouvez également appliquer une mise en forme conditionnelle à cet objet TextRange selon vos besoins.

Vous pouvez utiliser txtarea.selectionStart et txtarea.selectionEnd pour obtenir la position du texte sélectionné.

Ensuite, vous supprimez le texte et vous ajoutez le nouveau texte sélectionné.

Je ne connaissais pas beaucoup le langage Javascript, je l'ai donc écrit pour U

Vous pouvez effectuer une recherche sur Google à l'aide de mots clés: "Javascript Selected Text TextArea". "Javascript ajouter du texte à la position"

Exemple de code: fonction insertAtCursor (myField, myValue) {     // support IE     if (document.selection) {     myField.focus ();     sel = document.selection.createRange ();     sel.text = myValue;     }     // Prise en charge de MOZILLA / NETSCAPE     else if (myField.selectionStart || myField.selectionStart == '0') {         var startPos = myField.selectionStart;         var endPos = myField.selectionEnd;         myField.value = myField.value.substring (0, startPos)         + myValue         + myField.value.substring (endPos, myField.value.length);     } autre {         myField.value + = myValue;     }

caretPos = doGetCaretPosition(myField);
alert(caretPos);
setCaretPosition(myField,caretPos-3);

}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top