# Hilfe zum \*\*getSelected\*\* und \*\*replace\*\* von Toolbarevent benötigt

**URL:** <https://meta.discourse.org/t/need-help-to-getselected-and-replace-from-toolbarevent/226905>\
**Category:** Development\
**Created:** [13. Mai 2022 um 00:01 UTC](https://meta.discourse.org/t/need-help-to-getselected-and-replace-from-toolbarevent/226905 "2022-05-13T00:01:20Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![bksubhuti](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bksubhuti/32/254360_2.png) [@bksubhuti](https://meta.discourse.org/u/bksubhuti)\
**Post date:** [13. Mai 2022 um 00:01 UTC](https://meta.discourse.org/t/need-help-to-getselected-and-replace-from-toolbarevent/226905/1 "2022-05-13T00:01:20Z")

</div>

Ich versuche, eine einfache Button-Komponente zu schreiben, um eine Funktion namens toUni aufzurufen, die entweder den gesamten Text oder den ausgewählten Text verarbeitet (ausgewählter Text wird bevorzugt). Ich kann einen einfachen Button aus dem Tutorial erstellen und den gesamten Text des Komponisten verarbeiten und meinen verarbeiteten Text zum Komponistenbereich hinzufügen. (doppelt wiederholter Text ist das Ergebnis).

**Wie ersetze ich den gesamten Text aus dem Komponistenfenster (nachdem ich einige Verarbeitungen durchgeführt habe)?**  
**Wie erhalte ich den ausgewählten Text aus dem Komponistenfenster?**  
**Wie ersetze ich den ausgewählten Text aus dem Komponistenfenster (nachdem ich Verarbeitungen durchgeführt habe)?**

Ich sehe einige [Code](https://github.com/discourse/discourse/blob/86a783b3ad0f11674c0786daf5484d64f624a0af/app/assets/javascripts/discourse/app/mixins/textarea-text-manipulation.js), der Folgendes enthält:

```plaintext
    getSelected();
     replaceText();

```

Aber wenn ich es mit e.getSelected(); oder e.replaceText(old, new); kombiniere, funktioniert es nicht und ich nehme an, dass es eine Funktionsübereinstimmung oder einen Absturz gibt, da meine Alert-Box zur Rückmeldung nicht angezeigt wird.

Ich kann getText(); und addText() erfolgreich aus Ihrem Git-Ref-Code [hier](https://github.com/discourse/discourse/blob/0d30c19b7e1034c39e9eba01d8ac11570815e15f/app/assets/javascripts/discourse/app/components/d-editor.js) verwenden. Aber ich kann nicht herausfinden, wie ich den Inhalt löschen kann, nachdem ich ihn verarbeitet habe (damit ich addText() aufrufen und dann alles ersetzen kann).

Ich bevorzuge es jedoch, den ausgewählten Text zu finden und diesen zu ersetzen.

Derzeit fügt mein Code unten eine zweite Kopie des gesamten Komponistentextes direkt darunter ein, jedoch mit einigen Änderungen. Dies verwirrt den Benutzer.  
Ich muss entweder den gesamten Text vollständig ersetzen … oder nur die „ausgewählten“ Wörter verarbeiten. (oder beides)

Ich habe eine Live-Version [hier](https://classicaltheravada.org/t/enter-feedback-here/94/14?u=bksubhuti) erstellt

```plaintext

<script type="text/discourse-plugin" version="0.8">

  api.onToolbarCreate(function(toolbar) {

    toolbar.addButton({

      trimLeading: true,
      id: "buttonID",
      group: "insertions",
      label: "Pāḷi", // warum wird das als en.pali angezeigt?
      title: "add pali",
      perform: function(e) {
      const sel = e.getText();
      //alert(sel);
      const vel = toUni(sel);
        return e.addText("\n--------------------new text--------------------\n" + vel + "\n--------------------end text--------------------\");
      }
    });
  });
      //e.replaceText(sel,"hello");
      //e.replaceSeelc

      //const sel = e.selected();

      //let txt = "hello";
      //const sel = e.getSelected(0,100 );

function toUni(input) {
	if(!input || input == '') return input;
	//var nigahita = (DPR_prefs['nigahita']?'ṁ':'ṃ');
	//var Nigahita = (DPR_prefs['nigahita']?'Ṁ':'Ṃ');

	var nigahita = 'ṃ';
	var Nigahita = 'Ṃ';

	input = input.replace(/aa/g, 'ā').replace(/ii/g, 'ī').replace(/uu/g, 'ū').replace(/\\.t/g, 'ṭ').replace(/\\.d/g, 'ḍ').replace(/\\\"nk/g, 'ṅk').replace(/\\\"ng/g, 'ṅg').replace(/\\.n/g, 'ṇ').replace(/\\.m/g, nigahita).replace(/\\u1E41/g, nigahita).replace(/\\~n/g, 'ñ').replace(/\\.l/g, 'ḷ').replace(/AA/g, 'Ā').replace(/II/g, 'Ī').replace(/UU/g, 'Ū').replace(/\\.T/g, 'Ṭ').replace(/\\.D/g, 'Ḍ').replace(/\\\"N/g, 'Ṅ').replace(/\\.N/g, 'Ṇ').replace(/\\.M/g, Nigahita).replace(/\\~N/g, 'Ñ').replace(/\\.L/g, 'Ḷ').replace(/\\.ll/g,'ḹ').replace(/\\.r/g,'ṛ').replace(/\\.rr/g,'ṝ').replace(/\\.s/g,'ṣ').replace(/\"s/g,'ś').replace(/\\.h/g,'ḥ');

	return input;
}

</script>

```

---

_[View the full topic](https://meta.discourse.org/t/need-help-to-getselected-and-replace-from-toolbarevent/226905)._
