Christian: Eingabefeld prüfen tut mit IE aber nicht mit Netscape 4.79

Hallo!

Ich habe folgendes Problem. Das Script soll ein Eingabefeld auf verbotene Zeichen prüfen. Falls eines eingegeben wird, soll es gelöscht werden und eine Meldung erscheinen.

Das bisherige Funktion:

var forbidcnt=0;
  function forbid(o, re) {
  rx = new RegExp(re, 'gi');
  chk = o.value.match(rx);
  if(chk && chk.length) {
     if(!o.id) { o.id='tmp'+forbidcnt; forbidcnt++; }
     o.value = o.value.replace(rx, '');
     alert("Nur Zahlen und Punkte als Eingabe erlaubt!");
  }
}

Also mit dem IE klappt das einwandfrei. Aber mit Netscape 4.79 läuft er nur bis if(chk && chk.length) und ignoriert den Rest.

Kann mir jemand Helfen?

Danke im voraus.

Christian

  1. Hallo Christian,

    function forbid(o, re) {
      rx = new RegExp(re, 'gi');
      chk = o.value.match(rx);
      if(chk && chk.length) {

    wie sieht "o" aus?

    Gruß, Jürgen

    PS: Für mich ist "Berücksichtigen des Netscape 4.xx" etwa so wie "Verkaufen von verbleitem Normalbenzin" oder "Berücksichtigen von 486 unter DOS".

    1. Hallo JürgenB!

      Ich weiss dass der Netscape 4.79 ne olle Krampe ist, aber unser Unix-Admin sagt zum Update: "Geht nicht weil is nich". Also muss ich damit klar kommen.

      Der Aufruf erfolgt aus einem Eingabefeld.

      <input type=text name=feld onkeyup="javascript:forbid(this,'[^0-9...-]')">

      Desweiteren habe ich herausgefunden, dass er in this.value nicht den eingegebenen Wert übergibt, sondern den der vorher schon drinstand.

      Bsp.: Wenn schon 12345a im Feld steht, das Feld dann den den Focus verliert, dann ihn wiederbekommt und ich dann ein onkeyup-Event auslöse, tuts. Direkt bei Eingabe geht nix.

      Aber mal danke fürs posten!

      1. Hallo,

        Bsp.: Wenn schon 12345a im Feld steht, das Feld dann den den Focus verliert, dann ihn wiederbekommt und ich dann ein onkeyup-Event auslöse, tuts. Direkt bei Eingabe geht nix.

        Eingabe bzw. Änderung ist vielleicht per onChange o.ä. erkennbar;
        hast du mal testfähigen Code oder URI dazu?

        Grüsse

        Cyx23

        1. Hallo Cyx23!

          Hier ein Stück Code zum Testen:

          <HTML>
            <HEAD>
             <TITLE>XXX</TITLE>
             <META http-equiv=Content-Type content=text/html;CHARSET=iso-8859-1>

          <script type="text/javascript" language="JavaScript">

          /*Funktion zur Prüfung von jedem ein ein Feld eingegebenen Zeichens*/
                var forbidcnt=0;
                  function forbid(o, re) {
                     rx = new RegExp(re, 'gi');
                     chk = o.value.match(rx);
                     if(chk && chk.length) {
                       if(!o.id) {
                          o.id='tmp'+forbidcnt; forbidcnt++;
                          }
                        o.value = o.value.replace(rx,'');
                        alert("Nur Zahlen und Punkte als Eingabe erlaubt!");
                     }
                  }
            </script>

          </HEAD>
           <BODY>
            <p align=center><H1 align=center>Überschrift</H1></p>
            <hr><br>
            <form name="showTXT" method="get" action="bearbeiten.php">
            <table width="100%" cellpadding=10 cellspacing="0" border="0">
             <tr>
               <td>Name1</td>
               <td><input type=text name=name1 value=666 onkeyup="javascript:forbid(this,'[^0-9...-]')"></td>
              </tr>
              <tr>
               <td>Name2</td>
               <td><input type=text name=name2 value=-25 onkeyup="javascript:forbid(this,'[^0-9...-]')"></td>
              </tr>
             </table>
             </form>
            </body>
          </html>

          Ich hoff es ist das, was du gemeint hast.

          Vielen Dank fürs posten.

          Gruß Christian

          1. Hallo Christian,

            Ich hoff es ist das, was du gemeint hast.

            Ja danke, das ist doch schon recht komfortabel.

            Als einfache Notlösung bleibt erstmal wohl nur onchange, um die ganze Eingabe
            zu bearbeiten:

            <input type=text name=name1 value=666
            onkeyup="forbid(this,'[^0-9...-]')"
            onchange="if(document.ids){forbid(this,'[^0-9...-]')}">

            Grüsse

            Cyx23

            1. Hallo!

              Mit onchange funktioniert es. Es ist so zwar nicht optimal, aber es reicht.

              Vielen Dank für die Hilfe!

              Gruß Christian

  2. Hi,

    Also mit dem IE klappt das einwandfrei. Aber mit Netscape 4.79 läuft er nur bis if(chk && chk.length) und ignoriert den Rest.

    das kann nur bedeuten, dass (chk && chk.length) = false ist.

    Gruß
    Wurf