Martin Thormann: Bestimmte Zeichen mit RegExpressions in Textfeld ersetzen

Beitrag lesen

Folgendes Problem:

Ich habe ein Formular (hier vereinfacht dargestellt), dass ein Inputfeld enthält. Dieses Formular wiederrum liegt in einem Frame, der den Namen content trägt. Sprich, der Inhalt des Inputfeldes muß von JavaScript mit parent.content.document.formular.thema.value angesprochen werden.

<FORM action='forum_add.php' method='post' name='formular'>
  <input onBlur='javascript:ersetzen()' type='text' name='thema' class='normal' maxlength='30' size='30' value=''>
  <input type='submit' value='submit'>
</FORM>

Wenn man nun seine Eingabe getätigt hat und das Inputfeld verlässt (onBlur), soll die Funktion ersetzen() aufgerufen werden, die automatisch alle folgenden Zeichen im Inputfeld ersetzen soll, auch wenn sie doppelt hintereinander, in Reihe oder mehrmals vorkommen:

\ (Backslash)
' (einfacher Hochstrich)
" (doppelter Hochstrich)

Danach werden die Formulardaten nämlich von einem PHP-Skript verarbeitet und dieses verträgt diese Zeichen nicht. Ersetzt werden sollen die Zeichen durch gar nichts, also auch nicht durch Leerzeichen.

Wie sieht dazu ein geeignetes JavaScript aus, dass dies verwirklicht? Mein Versuch funktioniert erstens nur mit Netscape und ersetzt auch immer nur das erste zu ersetzende Zeichen:

z.B. wird:            gut\ ist nicht "gut' genug
zu:                   gut ist nicht "gut' genug
es soll aber werden:  gut ist nicht gut genug

Mein Skript sieht so aus:

function ersetzen()
  {
  var str = parent.content.document.formular.thema.value;
  newstr = str.replace(/['"\]/gi, "");
  parent.content.document.formular.thema.value = newstr;
  }

Martin