Zur Navigation

Per Button html-Tags an textarea übergeben

1 rattlesnake

Guten Tag,
ich würde gerne, wie im Titel schon beschrieben, per Klick auf einen button html-Tags an eine textarea übergeben.
Allerdings sollten das wirkliche html-Tag sein, also nicht die []-Schreibweise.

Ist soetwas überhaupt möglich?
Wenn es geht, wären Funktion, wie z.B. markierte Passagen von den html-Tags zu umschließen auch ganz nett. Wenn das allerdings unverhältnismäßig mehr Arbeit ist, braucht das nicht zu sein.


Danke schon einmal für alle Antworten!
Dominik

18.05.2008 11:08

2 Rudy

Was willst Du denn machen?

18.05.2008 11:31

3 rattlesnake

Das ist für eine Art Nachrichten-Script. Also zum Verfassen von Nachrichten.

18.05.2008 11:54

4 Rudy

Und dort willst Du HTML-Tags in der Textarea anzeigen? Warum verwendest Du nicht TinyMCE?

BTW: Wenn Du HTML zulässt, musst Du per Whitelist danach auf Serverseite alles rausfiltern, was Du nicht haben möchtest (gilt auch wenn Du TinyMCE verwendest, das macht im Hintergrund auch alles mit HTML in der Textarea). Mit BBCode ist das einfacher, da übersetzt Du nur die erwünschte Auswahl in HTML und der Rest ist ungefährlich.

18.05.2008 12:41 | geändert: 18.05.2008 12:48

5 rattlesnake

Einen WYSIWYG-Editor brauche ich gar nicht.
Ich will eigentlich nur einen Button, auf den ich klicken, sodass in der textarea ein html-Tag erscheint.
Es soll wie bbCodes arbeiten, nur statt [b] z.B. <b> einfügen.

18.05.2008 13:18

6 Rudy

Na gut... :)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
  <title>Tags in Textarea schreiben</title>
  <script type="text/javascript">
   // <![CDATA[
    function cur_ins(field, startTag, endTag, offset) {
      field.focus();
      if ((window.getSelection && document.createRange) || document.getSelection) { // FF, Op., Ko., Safari
        var scrollTop, scrollLeft;
        if (field.type == 'textarea' && typeof field.scrollTop != 'undefined') {
          scrollTop = field.scrollTop;
          scrollLeft = field.scrollLeft;
        }
        selStart = field.selectionStart;
        selEnd = field.selectionEnd;
        text = field.value.substring(selStart, selEnd);
        field.value = field.value.substring(0, selStart) + startTag + text + endTag + field.value.substring(selEnd);
        if (typeof scrollTop != 'undefined') {
          field.scrollTop = scrollTop;
          field.scrollLeft = scrollLeft;
        }
        if (text.length > 0) {
          if (offset != 0) {
            field.selectionEnd = selStart + startTag.length - offset;
          } else {
            field.selectionEnd = selStart + startTag.length + text.length + endTag.length;
          }
        } else {
          field.selectionEnd = selStart + startTag.length;
        }
        field.selectionStart = field.selectionEnd; 
      } else if (document.selection && document.selection.createRange) { // IE
        marker = document.selection.createRange();
        text = marker.text;
        marker.text = startTag + text + endTag;
        marker = document.selection.createRange();
        if (text.length > 0) {
          if (offset != 0) {
            marker.move('character', startTag.length - offset);
          } else {
            marker.move('character', startTag.length + text.length + endTag.length + offset);
          }
        } else {
          marker.move('character', -(endTag.length));
        }
        marker.select();
      } 
    }
 // ]]>
  </script>
</head>
<body>
  <div>
    <form method="post">
      <fieldset>
        <legend>Nachricht</legend>
        <textarea name="message" id="message" cols="40" rows="8"></textarea>
      </fieldset>
      <fieldset>
        <button onclick="cur_ins(this.form.message, '<strong>', '</strong>', 0); return false;"><strong>B</strong></button>
        <button onclick="cur_ins(this.form.message, '<em>', '</em>', 0); return false;"><em>I</em></button>
      </fieldset>
    </form>
  </div>
</body>
</html>

Das ist im Übrigen die Funktion für das Einfügen der BB-Code Tags hier im Forum, an der Jörg und ich geschraubt haben. Die funktioniert browserübergreifend, soweit wir es bisher testen konnten.

18.05.2008 13:44 | geändert: 18.05.2008 13:51

7 rattlesnake

Vielen Dank, ich werde mir das mal genauer anschauen und mich dann melden, falls ich Probleme habe. :)

18.05.2008 13:55

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]