Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Markierten Text auf HTML-Seite per JS ändern





Frage

Ich habe eine Textbox auf einer HTML-Seite, wo ein Benutzer seinen Text eingeben kann. Markiert der benutzer ein Wort in dem Text, und drückt auf einen Button, kann ich per JS herausfinden, welcher String markiert war (kennt ihr von Mr.Check *g*). Ich will jetzt aber per JS auf der Webseite, genau dieses markierte wort ändern lassen, und nur dieses wort. ALso angenommen der String "und" wurde markiert, dann soll auf klicken des buttons nur dieses markierte wort "und" geändert werden, und nur das, und nicht alle anderen davor und danach stehenden "und"s auch. Nur das markierte soll geändert in der Textbox auftauchen. Ausschließlich durch JS. Für Hilfe bin ich sehr sehr dankbar! P.S. vielleicht ein ansatz: ist es möglich zudem markierten String noch die genaue Cursorpostion in der Textbox per JS zu ermitteln? dann könnte man von da den String überschreiben...? Ich weiß es nicht

Antwort 1 von struppi

Hallo,
Es gibt ja die Möglichkei mit PasteHTML Textrange-Objecte der HTML-Seite umzuschreiben. Aber die Funktion läßt sich nicht auf ein Textfeld anwenden.
Nun könnte man es sich ja ganz einfach machen und den über das Textrange-Object ausgelesenen Text des Textfeldes in Textfeld.value suchen, herausnehmen und mit Stringfunktionen das ganze zu einem neuen Text verbinden. Problem ist hierbei, wenn der markierte Text mehrmals vorkommt, würde der dann auch ersetzt oder nur der zuerst gefundene...
Vieleicht fällt mir da noch was Gescheites ein.
Vorerst mal ein DEmo wie man ZB in einem IFrame markierte Textteile austauschen kann.
Das ist zwar VBscript geht aber auch durch wenn keine Domänübergriffe stattfinden.

<html><body>
<h1>Texte ersetzen</H1><hr>
<iframe name="ifr2" src="about:<h2><font face='arial' color='blue'>Wo gibt es kostenlose Hilfe?</font><h2>" height=300 width=300>
</iframe>
<iframe name="ifr"  src="about:<A HREF=VBscript:parent.document.ifr2.document.selection.createRange.pasteHTML(parent.document.forms(0).elements(0).value)' >Im linken Fenster ein Wort markieren und hier clicken</A>"  height=300 width=300>
</iframe>
<form>
<input type=hidden name="S1" value="<a href='https://supportnet.de'>Hier klicken</a>" ></textarea>
</form></body></html>

Daraus mußt du eine Html-Seite machen.
Gruß struppi


Antwort 2 von struppi

Hier mal die simple Lösung, die alle gleichlautenden Texteile ersetzt:


<form>
<input name="b1" Type=text value="fgfgdgfhfghkhkjghäjkghmgnh g. ggähjlk,gähj"> 
</form>
<script language="vbscript">

function selektierterText()
a = document.selection.createRange().text
b = document.forms(0).elements("b1").value
c = replace(b,a,"KUKUK")
document.forms(0).elements("b1").value = c

end function


</script>

<body>
...
<INPUT TYPE="button" VALUE="KUKUK in den Text schreiben" onMouseDown="vbscript:selektierterText()">
...
</body>

Auch dieser Code geht wie JS durch.
Gruß struppi

Antwort 3 von struppi

Noch ein Vorschlag:
In folgendem Code befindet sich ein Textfeld und ein Iframe.
Jetzt kannst Du im Textfeld schreiben.
Text wird über event ins Iframe geschrieben.
Jetzt im Iframe!! textstelle markieren und Button drücken.
Diesmal wird exakt der Teil im Textfeld ersetzt.
Wie gesagt ein Kompromiss weil man nicht direkt ans Textfeld ran kommt.


<form>
<input name="b1" onkeypress="vbscript:ifvis()" Type=text size="50"> 
</form>

<iframe name="ifr2"  src="" height=200 width=200></iframe>
<script language="vbscript">

function selektierterText()
parent.document.ifr2.document.selection.createRange.pasteHTML("KUKUK")
document.forms(0).elements("b1").value = parent.document.ifr2.document.body.outertext
end function

function ifvis()
parent.document.ifr2.location = "about:" & document.forms(0).elements("b1").value
end function


</script>
<body>

<INPUT TYPE="button" VALUE="KUKUK in den Text schreiben" onMouseDown="vbscript:selektierterText()">

</body>

Gruß struppi


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: