Eingabebox für BB-Code

  • Themenstarter Themenstarter blizz-faad
  • Beginndatum Beginndatum
B

blizz-faad

Guten Abend Community,
da ich mich nur sehr gering mit JavaScript auskenne wollte ich mal folgendes fragen:
Ich benutze bei mir, um BB-Code einzufügen, den Script von Selfhtml (Formulare: Text an Cursorposition einfügen). Wie kann ich diesen denn erweitern, damit wenn ein User zB auf den BB-Button "Link" klickt erst ein Eingabefeld erscheind in dem er den URL eingeben muss (ähnlich wie hier im Forum)?

Danke vielmals :)

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>

PHP:
  <h1>Demo: Einf&uuml;gen von Inhalten in eine Textarea</h1>
  <p>Positionieren Sie einfach den Cursor innerhalb der textarea oder markieren Sie Text darin.
     W&auml;hlen Sie dann "Einf&uuml;gen", um <code>[link]...[/link]</code> an dieser Stelle
     einf&uuml;gen zu lassen, sofern es der Browser erm&ouml;glicht.</p>
  <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>
 
Zuletzt bearbeitet von einem Moderator:
Moin,

füge das am Anfang der Funktion insert() ein:
Code:
if(aTag=='[link]')
  {
    if(url=prompt('Bitte Adresse eingeben','http://'))
    {
      aTag='[link="'+url+'"]';
    }
    else
    {
    return;
    }
  }
Es wird geguckt, ob es sich um einen Link-BBCode handelt, wenn ja, kommt der prompt und der Anfangs-Tag wird entsprechend geändert.
 

Neue Beiträge

Zurück