Domanda

Ho un textArea e un elenco. Quando un utente fa doppio clic su un elemento dell'elenco, l'etichetta dell'elemento selezionato deve essere inserita nell'area di testo. Quando un testo è selezionato nel textArea, dovrebbe essere sostituito, altrimenti il ??testo deve solo essere inserito nel testo esistente nel punto di inserimento.

Sono riuscito a ottenere il testo e tutto il resto, non riesco proprio a inserirlo nel punto di inserimento. Qualcuno sa come farlo?

È stato utile?

Soluzione

In realtà non è JavaScript ma Adobe Flex 3. Grazie per l'aiuto, mi ha spinto nella giusta direzione. Questo è il modo in cui è stato fatto in Flex 3:

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

Altri suggerimenti

La risposta accettata funziona alla grande se non si dispone di una formattazione HTML esistente. Nel mio caso, ho inserito un nuovo pulsante nell'editor sul quale l'utente può fare clic per inserire una parola chiave. Ho continuato a perdere tutta la formattazione HTML fino a quando non ho scavato nella classe reale e mi sono schierato con un oggetto 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 cosa bella di questo approccio è che puoi anche applicare la formattazione condizionale a quell'oggetto TextRange secondo necessità.

Puoi usare txtarea.selectionStart e txtarea.selectionEnd per ottenere la posizione del testo selezionata.

Successivamente, elimini txt e aggiungi il nuovo testo selezionato.

Non sapevo molto di Javascript, quindi l'ho scritto per U.

Puoi cercare su google con parole chiave: " Javascript testo selezionato TextArea " " Javascript aggiunge testo nella posizione "

Codice di esempio: funzione insertAtCursor (myField, myValue) {     // Supporto IE     if (document.selection) {     myField.focus ();     sel = document.selection.createRange ();     sel.text = myValue;     }     // Supporto 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);     } altro {         myField.value + = myValue;     }

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

}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top