Script um in einem Formular, was den
- name="formular"
und das textareafeld
- name="input"
hat, beliebige Zeichen (z.B. BB-Codes) an der Curserposition einzufügen.
Übergeben werden:
- anfangs Zeichen (aTag)
- end Zeichen (eTag)
(es müssen nicht beide übergeben werden).
Hier das Javascript:
function insert(aTag, eTag) {
var input = document.forms['formular'].elements['inhalt'];
input.focus();
/* Funktion für links (kann auskomentiert werden)*/
//wenn Link, inputfeld ausgeben
if(aTag == "[link"){
var result = prompt("Adresse eingeben:");
checklink(result,"");
}
function checklink(result, error){
if(isNaN(error)){
var result = prompt(error);
}
//prüfen ob variable leer
if(isNaN(result)){
//prüfen ob link http:// enthält
var http = /http:\/\//;
if(http.exec(result)){
aTag = "[link ext url='"+result+"']";
}
else{
aTag = "[link url='"+result+"']";
}
//passt
var error = "";
}
else{
var error = "Nichts eingegeben!";
};
if (isNaN(error)) {
checklink(result, error);
}
}
/* ab hier geht das script weiter */
/* IE */
if(typeof document.selection != 'undefined') {
/* Einfügen des Formatierungscodes */
var range = document.selection.createRange();
var insText = range.text;
range.text = aTag + insText + eTag;
/* 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();
}
/* Gecko */
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);
/* 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;
}
/* Rest Browser */
else{
/* Curserposition */
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);
}
};
/*funktionen für text: -absätze und -neue Zeile(umbruch)
Kann ebenfals auskommentiert werden*/
/* wenn im formular enter oder umschalt+enter gedrückt wird */
document.onkeydown = function(event) {
/*wenn umschalt und enter gedrückt wird (weicher) zeilenumbruch*/
if(event.keyCode==13 && event.shiftKey)/* 13 = enter shiftKey = umschalt*/
{
insert("[br]", "");
}
/* wenn enter gedrückt wird (harten) zeilenumbruch (ABSATZ)!*/
else if (event.keyCode == 13)/* 13 = enter" */ {
insert("", "[p]");
}
}
//-->
Alles anzeigen
hier Bsp. html
<!-- hier ist der Name wichtig! -->
<form name='formular'>
<input type='button' value='Zeilenumbruch' onClick="insert('[br]', '')">
<input type='button' value='Link' onClick="insert('[link', '[/link]')">
<input type='button' value='Absatz' onClick="insert('', '[p]')"><br>
<!-- hier ist der Name wichtig! -->
<textarea name='inhalt' cols='70' rows='5' wrap='off'></textarea>
</form>