Jens: Formularabfrage ob Value Zahl ist auf mehre Input-Felder setzen

Hallo,

habe das Problem, dass ich mit einer Funktion (istZahl), prüfen will ob das aktuelle Textfeld eine Zahl enthält. Das Problem ist jedoch dass ich den Focus auf das jeweilige Textfeld nicht dynamisch festlegen kann, bzw. weiß ich nicht wie es geht...

Hier der Code:

JAVASCRIPT:

<script language=JavaScript>
   function istZahl(inputname,wort)
   {
      ist_zahl=true;
      if(wort.length==0)
         ist_zahl=true;
      else
         for(n=0;n<wort.length;n++)
            {if(wort.charAt(n)<"0"||wort.charAt(n)>"9")ist_zahl=false;}
      if(!ist_zahl)
      {
          alert("Keine gültige Zahl eingetragen");
          window.document.form1.inputname.focus();
      }
   }
</script>

HTML:

<input type="text" size="15" name="feld1" onBlur="istZahl(this,this.value)">

HINWEIS: Bei dem Aufruf window.doc.....inputname liegt das Problem, da ich hier nicht das Objekt mit dem Namen "feld1" herein bekomme...

Danke schonmal, gruß jens

  1. Sup!

    Dein Code sieht 'eh bloedsinnig aus.
    mit this hast Du doch schon das richtige Objekt.
    Dann solltest Du mit this.name und this.value Namen und value bekommen, wobei Du this.name nicht brauchst, weil Du mit this schon das Objekt hast, von dem this.name der Name ist, mit dessen Hilfe Du dann das Objekt fokussieren willst... was irgendwie anscheinend auch Schwachsinn ist, denn wenn das Objekt nicht schon den Fokus haette, dann wuerde diese Ueberpruefungsfunktion doch niemals aufgerufen, und dann enthielte this auch nicht das richtige Objekt...

    Oder irre ich mich da gerade fatal?

    Gruesse,

    Bio

    --
    Parlamentarische, föderale Demokratie ist verteilter Bürgerkrieg
    1. Hallo,

      Oder irre ich mich da gerade fatal?

      Ja, denn die Funktion zum Prüfen wird onblur aufgerufen.

      viele Grüße

      Axel

  2. Hallo Jens,

    habe das Problem, dass ich mit einer Funktion (istZahl), prüfen will ob das aktuelle Textfeld eine Zahl enthält. Das Problem ist jedoch dass ich den Focus auf das jeweilige Textfeld nicht dynamisch festlegen kann, bzw. weiß ich nicht wie es geht...

    sieh dir einmal dieses Beispiel an:
    http://selfhtml.teamone.de/javascript/objekte/event.htm#allgemeines

    interessant ist hierbei das "return true;" nach der Ausgabe des events. Denkbar wäre es an dieser Stelle bereits "unerwünschte" Tastendrücke zu unterdrücken. Etwa: if(Taste != Zahl) return false;

    Du wirst allerdings nicht umhinkommen dir im onFocus() des jeweiligen Eingabefeldes zu merken: Bin ich ein "Nur Zahlen" Eingabefeld oder ein anderes. Und dann im Eventhandler entsprechend zu reagieren.

    HTH

    Jochen

  3. Hallo,

    Hier der Code:

    JAVASCRIPT:

    <script language=JavaScript>

    <script type="text/javascript">

    function istZahl(inputname,wort)
       {
          ist_zahl=true;
          if(wort.length==0)
             ist_zahl=true;
          else
             for(n=0;n<wort.length;n++)
                {if(wort.charAt(n)<"0"||wort.charAt(n)>"9")ist_zahl=false;}
          if(!ist_zahl)
          {
              alert("Keine gültige Zahl eingetragen");
              //window.document.form1.inputname.focus();

    inputname.focus();

    }
       }
    </script>

    HTML:

    <input type="text" size="15" name="feld1" onBlur="istZahl(this,this.value)">

    Hier übergibst Du als ersten Parameter das Eingabefeld selbst (this) als Object. Das steht in der Funktion dann in der Variablen inputname. Damit kann der Focus mit inputname.focus() gesetzt werden. Die Übergabe des zweiten Parmeters ist eigentlich überflüssig, weil mit inputname.value jederzeit auf den Wert im Feld zugegriffen werden kann.

    Zur Überprüfung auf Nur-Ziffern-Inhalt, schau Dir mal das RegExp-Object näher an. Du kannst Dir damit Deine for-Schleife sparen.
    http://selfhtml.teamone.de/javascript/objekte/string.htm#match

    viele Grüße

    Axel

  4. geht alles super, danke für eure hilfe!