Fehlersuche

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

  • Fehlersuche

    Ok liebe Gemeinde,

    hier mein Problem noch mal im neuen Thread.

    Ich finde den Fehler nicht!! Sieht ihn jemand??
    Code:
    <script language="javascript">
    function chkFormular()
    {
      elements = new Array("Kapitaldienst", "Tilgungsdauer", 
    "Investitionsrate", "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.elements[i].length;++i) {
       if(document.Basis.elements[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>
    Also ich teste meine Formularfelder ob es nur Zahlen mit eventuellen Kommas oder Punkten sind, KEINE Buchstaben!
    Testen tue ich mein Formular mit den Eingabefeldern Text, die wie im Array Elements heißen.

    Kann man Abfragen vielleicht bequemer mit PHP irgendwie erledigen??

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

  • #2
    Mit php wirst du nicht weit kommen, da die Seite ja bereits interpretiert wurde, wenn du sie siehst. Also hat php seine Arbeit bereits beendet.

    Funktioniert dein Script? Wenn nein, erhälst du eine Fehlermeldung?
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Fehlermeldung

      Welches Programm kann ich am besten nutzen um Fehlermeldungen so gut wie möglich zu sehen?? Ich kriege nur die vom IE
      Fehler in Zeile 63 Zeichen 1 Objekt erwartet.

      Gibt es da ne bessere Lösung??

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

      Kommentar


      • #4
        nimm mozilla oder firebird ... bei einem fehler einfach "javascript:" in die
        adresszeile eintippen

        ich würde php vorziehen und mit regulären ausdrücken arbeiten, zB:
        PHP-Code:
        preg_match_all("![0-9]+[.|,]?[0-9]*!",$pruefwert,$ergebnisarray); 
        @xgremlin
        wieso heisst die funktion wohl chkformular() ?
        Kissolino.com

        Kommentar


        • #5
          Ja sorry. Ich dachte Eni will das bei der Eingabe prüfen.

          Den Code hatte ich nur mal schnell überflogen.
          it's not a bug,
          it's a feature!

          Kommentar


          • #6
            Wo, wie?

            ich würde php vorziehen und mit regulären ausdrücken arbeiten, zB:

            PHP-Code:
            <?
            preg_match_all("![0-9]+[.|,]?[0-9]*!",$pruefwert,$ergebnisarray);
            ?>
            Wie prüfe ich das denn bei den Feldern??
            Baue ich das bei onSubmit ein, im FormularKopf, oder lieber bei jedem einzelnen Feld mit OnBlur?? Wie mach ich das am günstigsten??

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

            Kommentar


            • #7
              das ist php! nix onblur(), onsubmit() oder so!

              schreib dir mal einen text in eine variable (mit deinen un/möglichen zahlenwerten) namens $pruefwert und lass das preg mal laufen.
              im ergebnisarray stehen deine werte, die du ausgeben/bearbeiten
              kannst. ales weitere zu regulären ausdrücken findest in/über:
              - tutorials
              - forumsuche
              - php-manual

              und wenn du unbedingt javascript einsetzen willst, reguläre ausdrücke
              gibts dort auch, der suchbegriff lautet "match" => selfHTML
              Kissolino.com

              Kommentar


              • #8
                Ok, hab mir match()mal zur Brust genommen, baer stecke hier voll im Sumpf von JS fest.

                Ich bin nun schon so weit, nur ein Testprogramm geschrieben zu haben, das aber auch nicht den gewünschten erfolg bringt.

                Code:
                function checkField(Wert) {
                var Check = Wert.value.match(/\d/);
                alert(Wert,",-->", Check[0]);
                return false;
                }
                Das einzige was korrekt ausgegeben wird ist Wert,alles andere bleibt Stumm. Wert ist immer eine Nummer, meist 1 oder 2.

                Ok ihr lieben JS-Profis: Erleuchtet mich!!
                Ich weiß ich bin doof und habe keine Ahnung von JS, mein Gott ich mag nun mal nur PHP.
                HILFE!!

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

                Kommentar


                • #9
                  hi...

                  einen fehler, den ich schon mal gesehen habe ist, daß du i in der verschachelten schleife dopperlt verwendest:
                  PHP-Code:
                  for(i=0;i<6;++i) {
                  ...
                  for(
                  i=0;i<document.Basis.elements[i].length;++i) {
                  ... 
                  Dies führt auf jeden Fall zu ungewünschten Ergebnissen......
                  Verwende doch für Deine zweite Schleife einfach ein j und probier es nochmal...


                  Gruß,
                  Lugi.

                  Kommentar


                  • #10
                    Neuer Fehler

                    Hallo Halli,

                    habe seit dem letzten Post die Abfrage vollkommenumgeschrieben und finde jetzt den wahrscheinlich nur kleinen Fehler nicht!!

                    Bitte helft mir!

                    Code:
                    function checkField(Wert) {
                             chkz = "1";
                             for(i=0;i<Wert.length;++i) {
                                                        n = i+1;
                                                        Check = Wert.substring(i,n).match(/1|2|3|4|5|6|7|8|9|0/);
                                                        if(Check == false) {
                                                                          chkz = chkz.concat("0");
                                                             }
                                                        else{
                                                                          chkz = chkz.concat("1");
                                                             }
                             }confirm(chkz);
                             if(chkz.indexOf("0") == true) { confirm("eine null is drin");
                                                         Check1 = chkz.match(/0/g);
                                                                if(Check1 != false) {
                                                                          if(Check1.length > 1) {
                                                                                           alert("Falsche Eingabe");
                                                                                           return false;
                                                                                           }
                                                                             }
                                                         Check2 = Wert.match(/\S(,.)/);confirm(Check2);
                                                         if(Check2 != false) {
                                                                    return true;
                                                                    }
                                                         if(Check2 == false) {
                                                                   alert("Falsche Eingabe");
                                                                   return false;
                                                                   }
                                            }
                    }
                    Was passiert:
                    Ich bekomme zur Zeit Check (ganz oben) nur "1" zurück geliefert auch wenn der String nicht numerisch ist.
                    Weiter unten die Probleme waren inzwischen schon ausgemergelt, könnten jedoch als Kausale Kette wieder da sein.

                    Ichvermute hier den Fehler:
                    Check = Wert.substring(i,n).match(/1|2|3|4|5|6|7|8|9|0/);

                    hatte es auch schon in der Variante:
                    Check = Wert.substring(i,n).match(/\d/);

                    Seht ihr den Fehler??

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

                    Kommentar

                    Lädt...
                    X