arne: Zeichen in Textfeld ersetzen

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

  1. 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

  2. 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

    1. 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

      1. 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

        1. 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

        2. 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

      2. 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

        1. 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