Formular prüfen, andere frage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Formular prüfen, andere frage

    ich weiß Formular prüfen gabs schon ganz oft,hab auch alle durchgelesen, aber wurde auf diese spezielle Frage nicht fündig.
    Vielleicht bin ich auch nur zu doof, aber js is ziemlich neu für mich.

    mein JS:
    Code:
    function chkFormular()
    {
     if(document.Basis.elements[].value == "")  {
       alert("Bitte Werte eingeben, wenn nichts gewünscht bitte \"0\" eintragen!");
       document.Basis.elements[].focus();
       return false;
      }
     var chkZ = 1;
     for(i=0;i<document.Basis.this.value.length;++i)
       if(document.Basis.this.value.charAt(i) < "0"
       || document.Basis.this.value.charAt(i) > "9") {
         chkZ = -1;}
         if(chkZ = 1 && document.Basis.this.value.charAt(i) = ","
         || document.Basis.this.value.charAt(i) = ".") {
          chkz = 1;}
     if(chkZ == -1) {
       alert("Bitte nur Zahlen und einen Punkt oder ein Komma verwenden!");
       document.Basis.this.focus();
       return false;
    
    }
    Aufgerufen wirds so:
    Code:
    <form name="Basis" method=post action="Formular2.php" onSubmit="chkFormular();">
    So folgendes Problem:
    Ich habe ungefähr 15 Formularfelder in die jeweils Zahlen mit Komma oder Punkt eingegeben werden dürfen. Ich will das obrige Script nicht für jdes Feld schreiben, sondern er soll irgendwie selbstständig durch alle Felder durch.

    Script funzt noch überhaupt nicht!!

    Bitte um Hilfe.

    ENI
    ####
    DON'T UPSET ME!
    I'M RUNNING OUT OF PLACES
    TO HIDE THE BODIES
    ####

  • #2
    Re: Formular prüfen, andere frage

    document.Basis.this.value

    das ist mist, this ist ein reserviertes wort, das sich immer auf das aktuelle element bezieht, darfst du also hier so nicht verwenden.


    alle formular-elemente hast du in JS im elements-objekt zur verfügung, allerdings kennt dieses keine eigenschaft length.

    deshalb würde es sich wohl anbieten, elements in einer for-in-schleife zu durchlaufen.

    dabei jeweils den element-typ abfragen, und wenn dieser auf ein textfeld hindeutet, dann die überprüfung des wertes starten.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Geht so immer noch nich, aber ich geh mal davon aus, dass ich in JS was falschgemacht habe.

      Code:
      function chkFormular()
      {
      for(i=0;i<10;++i) {
         if(document.Basis.elements[i].value == "")  {
         alert("Bitte Werte eingeben, wenn nichts gewünscht bitte \"0\" eintragen!");
         document.Basis.elements[i].focus();
         return false;
         }
          // um überhaupt zu sehen ob was drin steht, oder ob's leer ist.
       if(document.Basis.elements[i].type == "text") {
         var chkZ = 1;
        for(i=0;i<document.Basis.elemets[i].length;++i) {
         if(document.Basis.elemnts[i].value.charAt(i) < "0"
         || document.Basis.elements[i].value.charAt(i) > "9") {
         chkZ = -1;
         }
        }
         if(chkZ = 1 && document.Basis.elements[i].value.charAt(i) = ","
         || document.Basis.elements[i].value.charAt(i) = ".") {
         chkz = 1;}
         if(chkZ == -1) {
         alert("Bitte nur Zahlen und einen Punkt oder ein Komma verwenden!");
         document.Basis.this.focus();
         return false;
         }
       }
      }
      ENI
      ####
      DON'T UPSET ME!
      I'M RUNNING OUT OF PLACES
      TO HIDE THE BODIES
      ####

      Kommentar


      • #4
        dann wird dir dein browser ja entsprechende fehlermeldungen bringen ...
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          machter net, er scheint das script immer erfolgreich zu durchlaufen obwohl ich felder leer lasse. Er geht einfach zur nächsten Seite über als wäre nichts gewesen, kein mucks, kein meckern.

          Eni
          ####
          DON'T UPSET ME!
          I'M RUNNING OUT OF PLACES
          TO HIDE THE BODIES
          ####

          Kommentar


          • #6
            pk, neue Situation:
            hab noch ein paar Fehler ausgebessert:
            Code:
            <script language="javascript">
            function chkFormular()
            {
              elements = new Array("Kapitaldienst", "Tilgungsdauer", "Innvestitionsrate", "Bauzinsen", "Zwischenfinanz", "Zuschlagfaktor");
            for(i=0;i<6;++i) {
               if(document.Basis.elements[i].value == "")  {
               alert("Bitte Werte eingeben, wenn nichts gewünscht bitte \"0\" eintragen!");
               document.Basis.elements[i].focus();
               return false;
               }
                // um überhaupt zu sehen ob was drin steht, oder ob's leer ist.
             if(document.Basis.elements[i].type == "text") {
               var chkZ = 1;
              for(i=0;i<document.Basis.elemets[i].length;++i) {
               if(document.Basis.elemnts[i].value.charAt(i) < "0"
               || document.Basis.elements[i].value.charAt(i) > "9") {
               chkZ = -1;
               }
              }
               if(chkZ == 1 && document.Basis.elements[i].value.charAt(i) == ","
               || document.Basis.elements[i].value.charAt(i) == ".") {
               chkz = 1;}
               if(chkZ == -1) {
               alert("Bitte nur Zahlen und einen Punkt oder ein Komma verwenden!");
               document.Basis.elements[i].focus();
               return false;
               }
             }
            }}
            
            
            </SCRIPT>
            Nun folgendes,
            er kommt immer mit dem erstenALERT hoch:
            Bitte Werte eingeben, wenn nichts gewünscht bitte "0" eintragen!
            obwohl etwas drin steht oder ein Buchstabe reingeschrieben wird, wo eine andere Fehlermeldung entstehen müsste.

            ENI
            ####
            DON'T UPSET ME!
            I'M RUNNING OUT OF PLACES
            TO HIDE THE BODIES
            ####

            Kommentar


            • #7
              hat denn keiner eine idee???
              vielleicht ein Workaround??
              Alles was ich tun will, ist zu überprüfen ob da in den Feldern Zahlen stehen und ob sie eventuell ein Komma oder Punkt enthalten.
              Alles andere will ich ausschließen!!

              Bitte helft mir!!!

              Gute Nacht

              ENI
              ####
              DON'T UPSET ME!
              I'M RUNNING OUT OF PLACES
              TO HIDE THE BODIES
              ####

              Kommentar

              Lädt...
              X