Martin Thormann: Bestimmte Zeichen mit RegExpressions in Textfeld ersetzen

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

  1. Hi,

    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.

    JavaScript ist nicht so meine Domäne, aber mich würde mal das PHP-Skript interessieren. Ich kann mir nämlich gut vorstellen, dass man es dem Skript beibringen kann, die Zeichen doch zu vertragen ;-) Ausserdem kannst Du die RegEx-Ersetzung auch mit PHP machen, und das wahrscheinlich einfacher.

    Viele Grüsse
    Achim

    1. Hi,

      Hallo!

      JavaScript ist nicht so meine Domäne, aber mich würde mal das PHP-Skript interessieren. Ich kann mir nämlich gut vorstellen, dass man es dem Skript beibringen kann, die Zeichen doch zu vertragen ;-) Ausserdem kannst Du die RegEx-Ersetzung auch mit PHP machen, und das wahrscheinlich einfacher.

      Es hat sich inzwischen erledigt, ich hab's mit JavaScript hinbekommen. Das PHP-Skript kann ich Dir leider nicht geben, da ich nur die HTML-Seite und das Skript dazu entwickeln soll, das PHP-Skript aber jemand anderes macht. Dieser welcher meinte nur, dass ich das Formular so gestalten soll, dass solche Zeichen gar nicht erst mit versandt werden. Aber ich werd' ihn nochmal deswegen ansprechen, vielleicht kann man das mit PHP doch besser gestalten.

      Viele Grüsse
      Achim

      Nye Martin

  2. hi,

    var reg =  /[\n"' \]/g;
    var txt =  "lala lala "la" bli 'li' \n lala";

    txt     =  txt.replace(reg, "");
    alert(txt)

    sollte hinhauen. In PHP wars afaik ereg_replace(), dabei die reg aber als string ohne slash.

    hth + Gruss  Joachim

    1. hi,

      var reg =  /[\n"' \]/g;
      var txt =  "lala lala "la" bli 'li' \n lala";

      txt     =  txt.replace(reg, "");
      alert(txt)

      sollte hinhauen. In PHP wars afaik ereg_replace(), dabei die reg aber als string ohne slash.

      hth + Gruss  Joachim

      thnks vry mch
      martin