Zeichen in Textfeld ersetzen
arne
- javascript
0 Kerstin0 Norbert Klein0 arne0 Norbert Klein0 Sven Rautenberg0 arne
Hallo Forum-ler!
Ich habe eine Funktion gebastelt, die Zeichen (einfaches Hochkomma) in das benannte Zeichen â umwandeln soll:
function ersetze(){
var eins = /'/;
var zwei = â ;
var jetzt = eins.replace(zwei);
}
Also es sollen mittels regulärer Ausdrücke alle Hochkommas gesucht werden und mit der Funktion replace() durch das benannte Zeichen ersetzt werden. Nur leider funktioniert das so nicht...
Wo liegt mein Fehler?
Danke!
Arne
Hallo Forum-ler!
Ich habe eine Funktion gebastelt, die Zeichen (einfaches Hochkomma) in das benannte Zeichen â umwandeln soll:
function ersetze(){
var eins = /'/;
var zwei = â ;
var jetzt = eins.replace(zwei);
}
Also es sollen mittels regulärer Ausdrücke alle Hochkommas gesucht werden und mit der Funktion replace() durch das benannte Zeichen ersetzt werden. Nur leider funktioniert das so nicht...
Wo liegt mein Fehler?
Danke!
Arne
Hallo Arne,
schau Dir noch mal das Beispiel an, dann müsste es klappen...
http://selfhtml.teamone.de/javascript/objekte/string.htm#replace
Gruss Kerstin
Hallo.
Ich habe eine Funktion gebastelt, die Zeichen (einfaches Hochkomma) in das benannte Zeichen â umwandeln soll
Warum?
function ersetze(){
var eins = /'/;
var zwei = â ;
var jetzt = eins.replace(zwei);
}
Wo liegt mein Fehler?
1.- Die Variable "zwei" muss eine Zeichenkette sein.
2.- Du benutzt replace() falsch.
3.- Würdest du replace() richtig verwenden, würdest du nur das erste Hochkommata ersetzten.
Versuch mal das:
----------------
<script type="text/javascript">
<!--
function ersetze(text)
{
eins = /'/;
zwei = "â";
while(text.indexOf("'") > -1){text = text.replace(eins,zwei)}
alert(text);
}
ersetze("'gg'");
//-->
</script>
Gruß
Norbert
Hallo Norbert,
Ich habe eine Funktion gebastelt, die Zeichen (einfaches Hochkomma) in das benannte Zeichen â umwandeln soll
Warum?
Weil der Inhalt eines Textfeldes nach dem Absenden in einer Datenbank gespeichert werden soll und dort Fehler verursacht (Als Apostroph gebrauchte Hochkommas). Es sollen noch vor dem Abschicken alle Hoch
Ich habe deinen Vorschlag jetzt mal für mich angepasst:
<html><head>
<script type="text/javascript">
<!--
function ersetze(text)
{
eins = /'/;
zwei = "â";
while(text.indexOf("'") > -1){text = text.replace(eins,zwei)}
}
//-->
</script>
</head>
<body>
<form action="" name="test">
<input name="text" type="text" onsubmit="ersetze(document.test.text.value)">
</form>
</body></html>
Leider verschwinden die Hochkommas immer nocht nicht. Was habe ich übersehen?
Arne
Grüß dich.
Leider verschwinden die Hochkommas immer nocht nicht. Was habe ich übersehen?
Du führst nur die Funktion aus, was eigentlich sinnlos ist, weil dadurch nicht viel passiert. Des Weiteren ist der Event-Handler onsubmit nur in form-tags von nutzen:
<html><head>
<script type="text/javascript">
<!--
function ersetze(text)
{
eins = /'/;
zwei = "â";
while(text.indexOf("'") > -1){text = text.replace(eins,zwei)}
return text;
}
//-->
</script>
</head><body>
<form action="" name="test" onsubmit="document.test.text.value = ersetze(document.test.text.value)">
<input name="text" type="text">
</form>
</body></html>
Die Funktion gibt (dank return) den umgewandelten Text zurück, welcher beim Submit dem Textfeld zugewiesen und somit übertragen wird.
Gruß
Norbert
Hi,
while(text.indexOf("'") > -1){text = text.replace(eins,zwei)}
dies kann man auch mit dem global-modifier erreichen, wird eigentlich auch von
allen Browsern unterstützt, die RegExp kennen:
Es muss der RegExp geändert werden:
entweder
eins = /'/g;
funktioniert, oder die ausführliche funktion
eins = new RegExp("'", "g");
bye eddie
PS: weiter erklärungen unter
http://developer.netscape.com/docs/manuals/js/client/jsref/regexp.htm
Hallo Norbert,
Die Funktion gibt (dank return) den umgewandelten Text zurück, welcher beim Submit dem Textfeld zugewiesen und somit übertragen wird.
stimmt, so funktioniert es. Danke für deine Mühe!
Grüße
Arne
Moin!
Ich habe eine Funktion gebastelt, die Zeichen (einfaches Hochkomma) in das benannte Zeichen â umwandeln soll
Warum?
Weil der Inhalt eines Textfeldes nach dem Absenden in einer Datenbank gespeichert werden soll und dort Fehler verursacht (Als Apostroph gebrauchte Hochkommas). Es sollen noch vor dem Abschicken alle Hoch
Wenn dir deine Datenbank lieb ist, dann machst du das nicht mit Javascript, sondern gefälligst auf dem Server! Andernfalls kann dir der Browser immer noch ein ' schicken, weil der böse Anwender es vielleicht so will (Javascript ausgeschaltet, einfach ein anderes oder modifiziertes Formular genommen, etc.). Du hast trotz Javascript keinerlei Einfluß, was die vom Browser abgeschickten Daten angeht!
Wenn du also mit Apostrophen ein Datenbankproblem hast, solltest du
a) die Apostrophe entweder in Entities wandeln, oder
b) die Apostophe escapen. Dies funktioniert meist durch Voransetzen eines Backslashes - abhängig von der serverseitigen Skriptsprache und deren Einstellungen funktioniert das möglicherweise sogar automatisch (Stichwort bei PHP: magic quotes).
- Sven Rautenberg
Moin!
Guten Morgen!
Wenn dir deine Datenbank lieb ist, dann machst du das nicht mit Javascript, sondern gefälligst auf dem Server! Andernfalls kann dir der Browser immer noch ein ' schicken, weil der böse Anwender es vielleicht so will (Javascript ausgeschaltet, einfach ein anderes oder modifiziertes Formular genommen, etc.). Du hast trotz Javascript keinerlei Einfluß, was die vom Browser abgeschickten Daten angeht!
Du hast völlig recht, eine Javascriptlösung ist die schlechteste aller Möglichkeiten. Mein Problem war nur, daß ich ein fertiges Script einsetze, in dem ich nicht so ohne weiteres etwas ändern kann (wegen fehlender Programmierkenntnisse). Aber ich werde natürlich nach einer severseitigen Lösung suchen.
Grüße
Arne