Textarea in 2 Variablen "vor" und "nach" dem Cursor aufteilen?

Catscrash

Mitglied
Hiho

ich habe folgendes Problem,
und zwar habe ich für ein CMS eine Art BB-Code-Script gebastelt, also nach klick auf einen Button wird ein bestimmter Code eingefügt, etc. halt so ähnlich wie in einem Forum.

Mein Problem ist jetzt noch: Wie bekomme ich es hin, ein Textfeld in 2 Variablen aufzuteilen.
Erstens der Text VOR der Cursorposition, zweitens der Text HINTER der Cursorposition? So könnte ich dann nämlich auch mittendrin BB-Code einfügen.

Bis jetzt habe ich überall nur gefunden "geht nicht" oder "gibts nicht", so wollte ich doch nochmal eine konkrete Ansage zu meinem Problem hören ;)

Dankeschön
Catscrash
 
Zuletzt bearbeitet:
Hi, ich hab noch ne Frage zu dem ganzen Thema.

Ich bin im Moment dabei einen kleinen WYSIWYG Editor zu schreiben.
Ich möchte jetzt den Text vor der Cursorposition zwischenspeichern und den nach dem Cursor. Meinen Tag dazwischen einfügen und mit write ins iframe zurückschreiben.

Mein Problem ist im Firefox:
Schreiben geht, aber wie komm ich an die doofe Cursorposition?
Er zeigt mir an, das selectionStart und selectionEnd undefined sind :-(
HTML:
		var intStart = ifrm.selectionStart;
		var intEnd = ifrm.selectionEnd;
		
		txt = (message).substring(0, intStart) + txt + (message).substring(intEnd, message.length);
		with (ifrm) {
			open();
			write(txt);
			close();
		}
		ifrm.focus();

Im IE kenne ich nur die Möglichkeit mit createRange, etc den markierten Text auszulesen und zu ändern. Aber wie bekomm ich den Text vor und hinter der Markierung?
HTML:
		ifrm.selection.createRange().text = txt;
		ifrm.selection.createRange().select();
Das bringt leider garnix, weil wenn ich zB
HTML:
<img src="bild.gif" border=0 align=left>
an die Funktion übergebe, schreibt er mir das genau so ins iframe un das is doof :rolleyes:

Hoffe mir kann jemand helfen!

//edit

OK, im IE is pasteHTML dein Freund...aber wie das ganze im FF? So gehts net...

HTML:
function insertImage(txt) {
	var message = ifrm.body.innerHTML;
	
	if((myVersion >= 4) && is_ie && is_win) {
		ifrm.focus();
		alert(ifrm.selection.start);
		ifrm.selection.createRange().pasteHTML('<img src="' + txt + '" param1=0 param2=0>');
		ifrm.selection.createRange().select();
	} else if(message.length>=0) { 
		var intStart = ifrm.selectionStart;
		var intEnd = ifrm.selectionEnd;
		
		txt = (message).substring(0, intStart) + txt + (message).substring(intEnd, message.length);
		with (ifrm) {
			open();
			write(txt);
			close();
		}
		ifrm.focus();
	} else {
		with (ifrm) {
			open();
			write(message + txt);
			close();
		}
	}

}
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück