Textbaustein per JavaScript in ein Textfeld einfügen

Im deutschsprachigen HTML-DB-Forum kam die Frage auf, wie man ein Textfeld per einfachem Klick auf Textbausteine mit eben solchen füllen kann. Da es sicher verschiedene Anwendungsfälle gibt, die damit etwas anfangen können, ein Blogbeitrag dazu.

Ich halte es einfach, weshalb die Tabelle mit den Textbausteinen auch keine Unterscheidung der Benutzer macht. Dies hatte ich in einer meiner Anwendungen so eingerichtet, damit jeder Anwender seine eigenen Textbausteine erstellen/verwenden kann.

Die Tabelle sieht so aus:

CREATE TABLE  "TEXTBAUSTEINE" 
   (	"TEXT" VARCHAR2(255), 
	"TEXTBAUSTEIN_NAME" VARCHAR2(255)
   ) ;

Auf der gewünschten Seite habe ich nun eine Textarea (P4_ZUSATZ) und ein Textitem (P4_TEXTBAUSTEIN) (Display only) eingefügt. In der Textarea wird am Ende der in dem Textitem ausgewählte Textbaustein eingefügt.

Beim Textitem P4_TEXTBAUSTEIN muss auf jeden Fall in den Security-Eigenschaften die Einstellung „Escape special characters“ auf No gesetzt werden. Ansonsten wird der HTML-Code nicht korrekt geparst.

Die Seite P4 bekommt einen PageProcess der vor dem Header ausgeführt werden soll. Dieser holt aus der Datenbank die Textbausteine, „baut“ sie zusammen und legt sie in P4_TEXTBAUSTEIN ab:

declare
v_text varchar2(4000);
begin
  for textrec in (select text
                       , textbaustein_name
                   from textbausteine) loop
                   v_text := v_text || '<a href="javascript:add_textbaustein(''' || replace(textrec.text, chr(10), '\n') || '\n'', ''P4_ZUSATZ'')">' || textrec.textbaustein_name || '</a> ';
  end loop;
  
  : P4_TEXTBAUSTEINE := v_text;
 -- ich musste zwischen Doppelpunkt und P4 ein Leerzeichen einfügen, da mir WordPress sonst immer einen Smilie drauß machen wollte, also rausnehmen
end;

Damit das Ganze dynamisch funktioniert, wird noch ein wenig JavaScript-Code benötigt. Den habe ich, weil es so schneller und einfacher geht, direkt in den Seitenattributen bei HTML-Header abgelegt:

<script type="text/javascript">
function add_textbaustein(pThis, pSelect)
{
  var l_This = pThis;
  var l_Select = html_GetElement(pSelect).value;

html_GetElement(pSelect).value = l_Select + l_This;
}
</script>

Am Ende des Tages erhält man eine Seite wie im Screenshot zu sehen. Mit einem Klick auf Text1 oder Text2 werden die Textbausteine eingefügt. Vorausgesetzt, die Tabelle mit den Textbausteinen ist gefüllt.

Dieser Beitrag wurde unter APEX, Oracle abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Eine Antwort zu Textbaustein per JavaScript in ein Textfeld einfügen

  1. Frank sagt:

    Hallo Carsten,
    das ist Fantastisch! Eine super Lösung ich werde es auf diese Art in meine Applikation einbinden !!!
    Ganz recht herzlichen Dank.
    Ich nehme an, dass es eine Vielzahl anderer Benutzer geben wird, die dafür eine Verwendung finden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert