Hans-Georg Felinks: Numerische Formularinhalte

In ein Formular wird eine Stimmbezirksnummer eingetragen, in der Variablen stimmbez sind die gültigen Nummern
wie muß ich die Abfrage programmieren, daß bei einer ungültigen Nummer die genannten Meldung erscheint

var chkZ = 1;
var stimmbez = new Array(6,106,209,302,402,452,504,604);
var stbez = parseInt (document.forms[0].elements[0].value);

for(i=0;i<stimmbez.length;++i)  

if ( stbez !=stimmbez[i])   chkZ = -1;
   if(chkZ == -1)

{     alert(text2 +"Stimmbezirk\nist keine gültige\nStimmbezirksnummer");
     document.forms[0].elements[0].select();
     document.forms[0].elements[0].focus();
     return false;    }

dank im voraus

  1. Hallo Hans-Georg

    wie muß ich die Abfrage programmieren, daß bei einer ungültigen Nummer die genannten Meldung erscheint

    1. Die Variable text2 wird in Deinem Code nirgends initialisiert...?

    2. if ( stbez !=stimmbez[i])   chkZ = -1;
         if(chkZ == -1)
         {     alert(....
    geht auch so:
       if ( stbez !=stimmbez[i])
         {     alert(....

    3. Ich weiss nicht genau, was Du mit "Abfrage programmieren" meinst, nehme aber mal an, den Zusammenhang zwischen Formular und Eingabeueberpruefung. Dann schau dir mal <../../tedf.htm> an.

    Und dann verrate mir doch noch: welches ist denn diese erste Wahl, bei der JavaScript ueber die Stimmabgabe entscheidet ??? ;-)

    viele Gruesse
      Stefan Muenz

    1. Hallo Hans-Georg

      wie muß ich die Abfrage programmieren, daß bei einer ungültigen Nummer die genannten Meldung erscheint

      1. Die Variable text2 wird in Deinem Code nirgends initialisiert...?

      2. if ( stbez !=stimmbez[i])   chkZ = -1;
             if(chkZ == -1)
             {     alert(....
        geht auch so:
           if ( stbez !=stimmbez[i])
             {     alert(....

      3. Ich weiss nicht genau, was Du mit "Abfrage programmieren" meinst, nehme aber mal an, den Zusammenhang zwischen Formular und Eingabeueberpruefung. Dann schau dir mal <../../tedf.htm> an.

      Und dann verrate mir doch noch: welches ist denn diese erste Wahl, bei der JavaScript ueber die Stimmabgabe entscheidet ??? ;-)

      viele Gruesse
        Stefan Muenz

      Natürlich entscheidet JAVAsript nicht über die Wahl, aber es gibt zur Europawahl eine Repräsentative Wahlstatistik in der in den Wahllolkalen nach Alter und Geschlecht gewählt wird. Wir (Statistik und Wahlen) erfassen die Daten über Webbrowser in eine DB2 Datenbank mit anschließender Auswertung

  2. In ein Formular wird eine Stimmbezirksnummer eingetragen, in der Variablen stimmbez sind die gültigen Nummern
    wie muß ich die Abfrage programmieren, daß bei einer ungültigen Nummer die genannten Meldung erscheint

    var stimmbez = new Array(6,106,209,302,402,452,504,604);

    Schonmal daran gedacht, bei diesen wenigen Auswahlmoeglichkeiten eine Auswahlliste zu benutzen anstatt eines Textfeldes? Da sparst Du Dir auch die ueberpruefung.

    Viele gruesse, Thomas Hieck

    1. In ein Formular wird eine Stimmbezirksnummer eingetragen, in der Variablen stimmbez sind die gültigen Nummern
      wie muß ich die Abfrage programmieren, daß bei einer ungültigen Nummer die genannten Meldung erscheint

      var stimmbez = new Array(6,106,209,302,402,452,504,604);

      Schonmal daran gedacht, bei diesen wenigen Auswahlmoeglichkeiten eine Auswahlliste zu benutzen anstatt eines Textfeldes? Da sparst Du Dir auch die ueberpruefung.

      Viele gruesse, Thomas Hieck

      hallo Thomas,
      das Auswahlfeld würde ich schon nehmen, nur habe ich zum testen erstmal nur 8 Inhalte benutzt, es sind 48 Stimmbezirke, aber das Script läuft nicht richtig, auch wenn ich die 6 eingebe bekommen ich die Meldung:

      var stimmbez = new Array(6,106,209,302,402,452,504,604);
      var stbez = parseInt (document.forms[0].elements[0].value);
      for(i=0;i<stimmbez.length;++i)
      if (stbez!=stimmbez[i])
         {     alert("Stimmbezirk\nist kein gültige\nStimmbezirksnummer ");
           document.forms[0].elements[0].select();
           document.forms[0].elements[0].focus();
           return false;    }

      woran liegt ?

      1. var stimmbez = new Array(6,106,209,302,402,452,504,604);
        var stbez = parseInt (document.forms[0].elements[0].value);

        kein Leerzeichen zwischen "parseInt" und "("

        »»  for(i=0;i<stimmbez.length;++i)

        i++ waere hier besser

        »»  if (stbez!=stimmbez[i])

        {     alert("Stimmbezirk\nist kein gültige\nStimmbezirksnummer ");
             document.forms[0].elements[0].select();
             document.forms[0].elements[0].focus();
             return false;    }

        Hier steckt auch ein Denkfehler drin. Selbst wenn ein richtiger Stimmbezirk gewaehlt worde kommt man (stimmbez.length - 1) mal in die Verlegenheit einen Fehler angezeigt zu bekommen (ohne return und den Rest)

        Viele Gruesse, Thomas Hieck

  3. Hallo !

    Habe den Quelltext abgeändert - vor geänderten Zeilen steht ein >>:

    var chkZ = -1;

    var stimmbez = new Array(6,106,209,302,402,452,504,604);
    var stbez = parseInt (document.forms[0].elements[0].value);

    for(i=0;i<stimmbez.length;++i)

    {
        if ( stbez ==stimmbez[i])   chkZ = 1;
    }

    if(chkZ == -1)

    {     alert(text2 +"Stimmbezirk\nist keine gültige\nStimmbezirksnummer");
         document.forms[0].elements[0].select();
         document.forms[0].elements[0].focus();
         return false;    }

    Dieses Skript geht davon aus, daß keine korrekte Nummer eingegeben wurde, deshalb wird chkZ auf -1 initialisiert.
    Nun geht es die einzelnen Werte durch, und wenn der Wert gefunden wurde, wird chkZ auf 1 gesetzt, also auf "Wert gefunden". In der ursprünglichen Version lief es andersrum, d.h., sobald ein ungleicher Wert gefunden wurde (was ja bei mehreren Werten immer der Fall ist), ging das Skript davon aus, daß die Nummer nicht existierte...

    Bei Fragen stehe ich gerne zur Verfügung !

    mfg
    H-Man