BB-Code einfügen

B

ByeBye 242513

Guten Morgen Community,

ich habe hier einen Script der es mir ermöglicht über Buttons BB-Codes, an der Stelle der Textbox, einzufügen in dem sich der Cursor befindet oder in einem makierten Bereich.
Nun würde ich dem User gerne noch anbieten über eine DropDownBox Schriftarten/Farben auszuwählen und/oder über eine InputBox Links/E-Mail-Adressen einzugeben.
Soweit ich den JavaScript-Code verstanden habe (bin nicht sehr gut in JavaScript) ist die Funktion mit der InputBox schon integriert (ziemlich weit unten im JavaScript-Code).

Kann mir jemand dabei helfen, wir ich meinen Code erweitern muss um diese beiden Zusatz-Funktionen zu erhalten?

Danke :)

Code Button:
PHP:
<input class="button" type="button" value="F" onClick="insert(\'\', \'\')" />

Code JavaScript:
Code:
function insert(aTag, eTag) {
  var input = document.forms['formular'].elements['nachricht'];
  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);
  }
}
 
Zuletzt bearbeitet von einem Moderator:
Hi,

die JS-Funktion ist schon für das von dir Gewünschte vorbereitet. Du musst lediglich den Aufruf und den zugehörigen HTML-Code entsprechend anpassen.

So wäre es möglich, die Farbwerte in die value-Attribute der Optionen zu schreiben. Beim Wechsel (onchange) wird die Funktion insert mit den entsprechenden Argumenten aufgerufen.

Beispiel:
Code:
  <select onchange="if(this.selectedIndex!=0){insert('','');}">
    <option value="-1">- Farbe -</option>
    <option value="f00">rot</option>
    <option value="0f0">grün</option>
    <option value="00f">blau</option>
  </select>

Ciao
Quaese
 
Vielen Dank Quaese für die schnelle und präzise Antwort. Hat wunderbar funktioniert.

Könntest du mir noch verraten wie ich mit JS, bezogen auf mein BB-Code, eine prompt-Box (Box die "aufpoppt" mit einer Eingabemöglichkeit z. B. "Tragen Sie Ihre E-Mail Adresse ein:") erzeugen kann.

EDIT:
Habe es nun selber herausgefunden:
Code:
<input class="button" type="button" value="URL" onClick="a = window.prompt(\'Bitte geben Sie einen Link ein:\',\'http://\'); insert(\'[ ur l=\'+a+\']\',\'[ /url]\')" />

Sollte so in Ordnung sein, oder?
 
Zuletzt bearbeitet von einem Moderator:
Zurück