nordi
Erfahrenes Mitglied
Hallo, ich weiß - es ist ein komisches Topic, was ich da eingegeben habe, aber ich weiß nicht, wie ich es anders beschreiben soll Ich habe eine Maske, in der ich Text eingebe und die dann in eine Datenbank abgespeichert wird. Den Text kann man via BB-Code formatieren. Dafür habe ich folgenden Code verwendet:
die Javascript-Datei sieht wie folgt aus:
Es klappt auch alles wunderbar. Aber wenn ich auf einen Button klicke wie bsplw. BOLD, dann scrollt die Seite automatisch nach oben?! Die Textarea befindet sich relativ weit unten auf der Seite - man muss also runterscrollen um sie zu sehen. Wenn man dann den Text eingibt und ihn gegebenfalls formatieren will mit den Buttons, springt die Seite automatisch ganz nach oben und ich weiß nicht warum? Wie kann man diesen Bug beheben?
Vielen Dank für Anregungen.
Grüße aus Köln
HTML:
<a href="#" onClick="insert('[ b ]', '[ /b ]')" class="bold">Bold</a>
<a href="#" onClick="insert('[ i ]', '[ /i ]')" class="italic">Italic</a>
<a href="#" onClick="insert('[ UP ]', '[ /UP ]')" class="uppercase">UPPER</a>
<a href="#" onClick="insert('[ u ]', '[ /u ]')" class="underline">Underline</a>
<a href="#" onClick="insert('[ url= ]', '[ /url ]')">Hyperlink</a>
<a href="#">Color<span><img src="img/grau.png" onClick="insert('[ color=#9e9e9e ]', '[ /color ]')" /><img src="img/gruen.gif" onClick="insert('[ color=#cdfa2e ]', '[ /color ]')" /></span></a>
die Javascript-Datei sieht wie folgt aus:
Code:
function insert(aTag, eTag) {
var input = document.forms['editor'].elements['text'];
input.focus();
if(typeof document.selection != 'undefined') {
var range = document.selection.createRange();
var insText = range.text;
range.text = aTag + insText + eTag;
range = document.selection.createRange();
if (insText.length == 0) {
range.move('character', aTag.length + insText.length + eTag.length);
} else {
range.moveStart('character', aTag.length + insText.length + eTag.length);
}
range.select();
}
else if(typeof input.selectionStart != 'undefined')
{
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);
var pos;
if (insText.length == 0) {
pos = start + aTag.length + insText.length + eTag.length;
} else {
pos = start + aTag.length + insText.length + eTag.length;
}
input.selectionStart = pos;
input.selectionEnd = pos;
}
else
{
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;
}
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);
}
}
Es klappt auch alles wunderbar. Aber wenn ich auf einen Button klicke wie bsplw. BOLD, dann scrollt die Seite automatisch nach oben?! Die Textarea befindet sich relativ weit unten auf der Seite - man muss also runterscrollen um sie zu sehen. Wenn man dann den Text eingibt und ihn gegebenfalls formatieren will mit den Buttons, springt die Seite automatisch ganz nach oben und ich weiß nicht warum? Wie kann man diesen Bug beheben?
Vielen Dank für Anregungen.
Grüße aus Köln