![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: Marcus Maurer, 30. 04. 2005, 09:28
Hallo zusammen,
ich habe in meinem Formular für ein Forum ein kleines Script, welches bestimmte Zeichen (Smilie Code) in die Textbox einfügt.
document.text = document.text + ":-)" oder so.
Problem dabei: Es wird nie an die Stelle des Cursors im Text sondern logischer Weise immer hinter das letzte Zeichen in der Textbox angefügt.
Wie bekomme ich eine Einfügung an der Cursorposition hin?
Dank und Gruß
Marcus
Die folgende Nachricht zum Thema stammt von: fastix, 30. 04. 2005, 11:19
»» Hallo zusammen,
»»
»» ich habe in meinem Formular für ein Forum ein kleines Script, welches bestimmte Zeichen (Smilie Code) in die Textbox einfügt.
Ich hab das mal hier irgendwo, irgendwie gefunden:
function insert(form, element, aTag, eTag) {
/*
Variablen:
form := Name oder Nummer des Formulars
element := Name oder Nummer des Formularelements
aTag := Text, der vor der Markierung oder Mauscursor eingefügt werden soll
aTag := Text, der nach der Markierung oder Mauscursor eingefügt werden soll
*/
var input = document.forms[form].elements[element];
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);
}
}
Die folgende Nachricht zum Thema stammt von: Siechfred, 30. 04. 2005, 11:58
Tag fastix.
»» Ich hab das mal hier irgendwo, irgendwie gefunden:
Jepp, hier: http://aktuell.de.selfhtml.org/tippstricks/javascript/bbcode/.
Siechfred
--
«Ich liebe euch doch alle!»
Die folgende Nachricht zum Thema stammt von: Dennis, 30. 04. 2005, 12:01
Hi Siechfred,
»» Jepp, hier: http://aktuell.de.selfhtml.org/tippstricks/javascript/bbcode/.
Hm, das hatte ich doch vorhin schon geschrieben - ist das Posting irgendwie gelöscht worden, wurde fo_server neu gestartet oder hab ich irgendwie beim Abschicken Mist gebaut?
MfG, Dennis.
--
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
That's life - Es gibt im Leben[tm] keine Zurück-Taste. (Fabian Transchel)
Die folgende Nachricht zum Thema stammt von: Marcus, 30. 04. 2005, 16:30
Super, danke. Funktioniert. Hab zwar nicht alles verstanden, aber manchmal muss es halt kopieren, statt kapieren sein :-)
© 1998-2006
Impressum, Software: Classic Forum