[JavaScript] Problem mit javascript bbcode

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JavaScript] Problem mit javascript bbcode

    Hallo,

    ich habe ein kleines Problem mit einem bbcode script.

    Wenn ich in der Textarena einen Text markiere und sich darüber ein Text, z. B. mit zwei Leerzeilen dazwischen befindet, und dann den bbcode über den Button ausführe, setzt er mir zwar den bbcode um das Wort, setzt dabei aber den Text an das Ende des darüberliegenden Text. Egal ob Leerzeilen etc. dahinter sind. Wir bekomme ich es hin, daß er den bbcode um den Text setzt und Leerzeilen in der Textarena nicht löscht?

    Hier ein Auszug:



    Code:
    <script language="javascript" type="text/javascript">
      <!--
      // Array mit den HTML-Tags zum Formatieren des Textes
      arrTags = new Array();
      arrTags['fett'] = new Array("", "");
      
    
      var txtBefore;
      var txtAfter;
      var txtMiddle;
    
    	function splitSelection() {
    	  // TextArea den Fokus geben
    	  document.formular.txtArea.focus();
    	  // TextRange-Objekt des selektierten Textes erstellen
    	  var selText1 = document.selection.createRange();  // Zum Positionieren des Cursors an Anfang der Markierung
    	  var selText2 = document.selection.createRange();  // Zum Positionieren des Cursors an Ende der Markierung
    
        // Markierten Text auslesen
    	  txtMiddle = selText1.text;
    	  // Bewegt den Cursor vor den markierten Text
    	  selText1.collapse(true);    // Start- und Endpunkt sind gleich
    	  // Bewegt den Cursor an das Ende des markierten Textes
    	  selText2.collapse(false);   // Start- und Endpunkt sind gleich
    
    	  // Markierte Bereiche duplizieren
    	  var selTxtBefore = selText1.duplicate();	    // Endpunkt selTextBefore vor markiertem Bereich
    	  var selTxtAfter = selText2.duplicate();		// Startpunkt selTextAfter nach markiertem Bereich
    
    	  // Setzt das Objekt auf den Text der TextArea -> selText1 enthält den gesamten Text der Area
    	  selText1.moveToElementText(document.formular.txtAr  ea);
    	  // Der Startpunkt von selTxtBefore wird der Startpunkt des gesamten Area-Textes
    	  selTxtBefore.setEndPoint("StartToStart", selText1);
    	  // Der Endpunkt von selTxtAfter wird der Endpunkt des gesamten Area-Textes
    	  selTxtAfter.setEndPoint("EndToEnd", selText1);
    
    	  txtBefore = selTxtBefore.text;
    	  txtAfter = selTxtAfter.text;
    	}
    
     function insert(strFormat) {
      splitSelection();
      document.formular.txtArea.value = txtBefore + arrTags[strFormat][0] + txtMiddle + arrTags[strFormat][1] + txtAfter;
      document.formular.txtArea.focus();
      }
    
      // Falls ein Wert über die URL übergeben wurde
      if(window.location.search != ""){
      	// Text für Vorschau auslesen und extrahieren
      	var strParameter = String(unescape(window.location.search));
        strParameter = strParameter.substr(1, strParameter.length);
      }
    
      //-->
    </script>
    
    </head>
    <body>
    <form name="formular" action="" method="POST">
    
    <!-- Buttons --> 		  
    <input type="button" title="Fett: Text" value="B" style="font-weight:bold; width: 30px" onmouseover="this.style.cursor=('hand')" onClick="insert('fett')">
    <p>
    <textarea name="txtArea" rows="16" cols="45"></textarea>
    </p>          
    </form>
    kann mir jemand helfen... vielen dank schonmal

  • #2
    [schleichwerbung]
    http://www.php-resource.de/forum/sho...threadid=29455
    [/schleichwerbung]
    Kissolino.com

    Kommentar


    • #3
      [JavaScript]

      ich glaube ich komme so nicht weiter...
      habe noch mal einen anderen code. Bei dem ist das problem das die variable so aufgerufen wird:
      <p><input type="button" value="Einfügen" [COLOR=DarkOrange]onClick="insert('[link]', '[/link]')"[/COLOR]></p>

      jetzt wollte ich das so in etwa machen:

      <p><input type="button" value="Einfügen" [COLOR=DarkOrange]onClick="insert('link')"[/COLOR]></p>

      und die variable so in den code einbauen:

      Code:
      <script type="text/javascript">
      <!--
      
      var url = ('[link]', '[/link]');
      
      
      function insert(aTag, eTag) {
        var input = document.forms['formular'......
      aus igendwelchen gründen geht das nicht...

      kann mir jemand helfen?... danke schon mal





      unveränderter code:

      Code:
      <script type="text/javascript">
      <!--
      function insert(aTag, eTag) {
        var input = document.forms['formular'].elements['eingabe'];
        input.focus();
        /* für Internet Explorer */
        if(typeof document.selection != 'undefined') {
          /* Einfügen des Formatierungscodes */
          var range = document.selection.createRange();
          var insText = range.text;
          range.text = aTag + insText + eTag;
          /* Anpassen der Cursorposition */
          range = document.selection.createRange();
          if (insText.length == 0) {
            range.move('character', -eTag.length);
          } else {
            range.moveStart('character', aTag.length + insText.length + eTag.length);      
          }
          range.select();
        }
        /* für neuere auf Gecko basierende Browser */
        else if(typeof input.selectionStart != 'undefined')
        {
          /* Einfügen des Formatierungscodes */
          var start = input.selectionStart;
          var end = input.selectionEnd;
          var insText = input.value.substring(start, end);
          input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
          /* Anpassen der Cursorposition */
          var pos;
          if (insText.length == 0) {
            pos = start + aTag.length;
          } else {
            pos = start + aTag.length + insText.length + eTag.length;
          }
          input.selectionStart = pos;
          input.selectionEnd = pos;
        }
        /* für die übrigen Browser */
        else
        {
          /* Abfrage der Einfügeposition */
          var pos;
          var re = new RegExp('^[0-9]{0,3}$');
          while(!re.test(pos)) {
            pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
          }
          if(pos > input.value.length) {
            pos = input.value.length;
          }
          /* Einfügen des Formatierungscodes */
          var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
          input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
        }
      }
      //-->
      </script>
      </head>
      <body>
        <form name="formular" action="">
          <p><textarea name="eingabe" cols="30" rows="10">Ihre Nachricht</textarea></p>
          <p><input type="button" value="Einfügen" onClick="insert('[link]', '[/link]')"></p>
        </form>
      </body>
      </html>

      Kommentar

      Lädt...
      X