Zeichen Zeilende chr($182) imTextfeld anzeigen

Knodomar

Grünschnabel
Hallo zusammen,

ich bin noch beim programmieren eines Tipptraining-Programmes für meine Schüler.

Ich zeige ein Textaerafeld (ohne Formatierungsmöglichkeit) an, in das die Schüler(innen) hinein schreiben können.

Nun mein Wunsch (ich habe es ja schon gesehen) den ich mit PHP gerne verwirklichen möchte. Hier möchte ich nun, dass das Zeilenendezeichen chr($182) nach dem drücken der Enter-Taste angezeigt wird.

Somit sollen die Schüler(innen) überprüfen/sehen können, ob sie an der richtigen Stelle die Zeilenschaltung gemacht haben.

Danke für jede Hilfe!
Schöne Grüße vom Bodensee
Klemens
 

Anhänge

Soll während dem Schreiben oder nach dem Abschicken passieren?

Je nachdem ists Javascript oder PHP

Nachtrag:
Für den Fall, dass erst nach dem absenden ersetzt werden soll, hier ein kleines Beispiel
PHP:
<form method="post">
    <textarea name="text"></textarea>
    <br />    
    <input type="submit" name="submit"/>
</form>
<hr />
<?php
    if(isset($_POST['submit'])){
        //Zeilenumbruch durch chr(182)&Zeilenumbruch ersetzen
        $text = str_replace(chr(13), chr(182).chr(13), $_POST['text']);
        //Für die Ausgabe alle Zeilenumbrüche durch <br />-Tags ersetzen
        print nl2br($text);
    }
?>
 
Zuletzt bearbeitet:
Hallo yaslaw !

Nach dem Absenden - das funktioniert schon.
Also das Abspeichern und auch das Anzeigen.

Jetzt brauche ich dann wohl Javascript, da habe ich jetzt gar keine Ahnung wo ich anfangen muss :)

Schöne Grüße, Klemens
 
Wenn man die Eingabetaste drückt, springt der Cursor ans Ende, aber ansonsten funktioniert es.

Javascript:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html id="html" xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
	
	<title>Newline</title>
	
	<style type="text/css">
	#txt {
		width:600px;
		height:300px;
	}
	</style>
	
	<script type="text/javascript">
	/* <![CDATA[ */
		window.onload = function() {
			var txt = document.getElementById("txt");
			var rx = new RegExp('([^'+String.fromCharCode(187)+'])'+'\n', 'g');
			
			txt.onkeyup = function() {
				this.value = this.value.replace(rx, '$1'+String.fromCharCode(187)+'\n');
			}
		}
	/* ]]> */
	</script>
</head>

<body>
	<div>
		<textarea id="txt"></textarea>
	</div>
</body>
</html>
 
Liebe oder Lieber CPoly,

das ist einfach SUPER, vielen Dank!

Je mehr ich sehe was mit javascript alles möglich ist, umso mehr wird mir klar, dass ich mich mehr damit befassen muss!

Schöne Zeit!
Klemens
 
Liebe oder Lieber CPoly,

in Goolge Crome funktioniert das Skript ausgezeichnet.
Beim IExplorer spinnt es und hängt sich schließlich auf.

Ich arbeitei zu Hause viel mit dem G.Crome,
nur in der Schule läuft Standanrd der IExplorer.

Hast du da eine Idee? (Außer in der Schule IExplorer zu entfernen :)

Schöne Grüße
Klemens
 
"Lieber CPoly" geht in Ordnung, ich bin männlich ;)

Es liegt nicht am IE, sondern an Windows. Im Opera unter Windows geht es auch nicht. Das liegt mit an Sicherheit grenzender Wahrscheinlichkeit daran, dass Windows für eine neue Zeile kein LineFeed (\n) sondern ein Carriage Return (\r) gefolgt von einem Line Feed verwendet.

Ich muss das irgendwie anpassen, bisher hats noch nicht hingehauen.

Edit: Ich habe es jetzt mit zwei Regulären Ausdrücken gelöst. Habe es nicht besser hinbekommen.

Javascript:
window.onload = function() {
	var
		txt = document.getElementById("txt"),
		rx1 = new RegExp('([^'+String.fromCharCode(187)+'])'+'\r\n', 'g'),
		rx2 = new RegExp('([^'+String.fromCharCode(187)+'\r])'+'\n', 'g');
	
	txt.onkeyup = function() {
		this.value = this.value
			.replace(rx1, '$1'+String.fromCharCode(187)+'\r\n')
			.replace(rx2, '$1'+String.fromCharCode(187)+'\n');
	}
}
 
Zuletzt bearbeitet:
Hallo CPoly,
danke für das rasche Antworten!

Glaubst du schon, dass Windows daran Schuld ist? Ich habe hier im Büro auch Windows installiert: IE funktioniert es nicht - dafür in Google-Crome super!

Schöne Grüße
Klemens
 
Hallo CPoly,

du hast vielleicht doch recht :)

Wenn ich \n mit \r\n ergänze, dann geht es auch im IE - GoogleCrome dann nicht mehr.
Nun muss ich einfach abfragen, schon längst fällig, mit welchem Brower meine User unterwegs sind.


var txt = document.getElementById("txt");
var rx = new RegExp('([^'+String.fromCharCode(182)+'])'+'\r\n', 'g');

txt.onkeyup = function()
{
this.value = this.value.replace(rx, '$1'+String.fromCharCode(182)+'\r\n');
}


Schöne Grüße
Klemens
 
Zurück