Benutzerdefinierte Suche

wahrscheinlich bin ich blind

  1. Steglich

    Steglich Thread StarterMacUser Mitglied

    Mitglied seit:
    30.05.2003
    Beiträge:
    206
    Zustimmungen:
    0
    oder warum wird mir bei folgender Funktion nur die Meldung mit subject ausgegeben, wenn die anderen Felder auch leer sind:
    HTML:
    function checkForm() {
    
    var checkfelder = new Array();
    var meldung = '';
    
    checkfelder[0] = "subject"; // Bezeichnungen der Formularfelder
    checkfelder[1] = "EmailText";
    checkfelder[2] = "email";
    
    for (var i = 0; i < checkfelder.length; i++) {
        if (document.myForm.elements[checkfelder[i]].value == '') {
            if (meldung == '') {
            		meldung = checkfelder[i];
            } else { 
            		meldung = meldung + ', ' + checkfelder[i];
            }
        }
    if (meldung == '') {
        return true;
    } else {
        meldung = 'Damit wir die Email korrekt empfangen k&ouml;nnen, sollten Sie bitte noch folgende Felder eingeben:\n' + meldung;
        alert (meldung);
        return false;
    }
    } // for
    } // function checkform
     
    Steglich, 22.11.2004
  2. Thommy

    ThommyMacUser Mitglied

    Mitglied seit:
    23.06.2003
    Beiträge:
    1.831
    Zustimmungen:
    0
    hm.. also ich seh keine Fehler.
    Evtl liegt der Fehler hier:

    document.myForm.elements[checkfelder].value == ''

    Heißen die Formular Elemente denn auch "EmailText" und "email" ? Wenn nicht, würde er die ja nicht verarbeiten.
     
    Thommy, 22.11.2004
  3. current

    currentMacUser Mitglied

    Mitglied seit:
    02.10.2004
    Beiträge:
    64
    Zustimmungen:
    1
    Weil das if (meldung = '') im for-loop steht und bei ersten leeren Feld true zurückgibt?

    Hint: Es zählen die {}, nicht die Einrückung.
     
    current, 22.11.2004
  4. Steglich

    Steglich Thread StarterMacUser Mitglied

    Mitglied seit:
    30.05.2003
    Beiträge:
    206
    Zustimmungen:
    0
    Formularfelder richtig

    die anderen beiden Formularfelder sind auch richtig angegeben.
    Schon langsam komme ich mir richtig blöd vor.
     
    Steglich, 22.11.2004
  5. Thommy

    ThommyMacUser Mitglied

    Mitglied seit:
    23.06.2003
    Beiträge:
    1.831
    Zustimmungen:
    0
    Nee.. das ist schon soweit richtig. Innerhalb der Schleife wird halt gefragt ob bisher eine FehlerMeldung existiert. Wenn ja, dann füge den 1. Wert hinzu. Beim nächsten durchlauf wird der Else-Fall wirksam und es wird der 2. oder 3. an die bestehende Meldung gehängt.
     
    Thommy, 22.11.2004
  6. current

    currentMacUser Mitglied

    Mitglied seit:
    02.10.2004
    Beiträge:
    64
    Zustimmungen:
    1
    Nein, es ist falsch. Die Meldung wird bei der Verschachtelung nur dann angezeigt, wenn das erste Feld leer ist. Ansonsten wird der for-Loop sofort abgebrochen. Das 'if (meldung ='') ..' gehört einfach hinter den for-Loop.
     
    current, 22.11.2004
  7. Steglich

    Steglich Thread StarterMacUser Mitglied

    Mitglied seit:
    30.05.2003
    Beiträge:
    206
    Zustimmungen:
    0
    for Schleife

    gerade habe ich festgestellt, dass meine for Schleife nur einmal durchlaufen wird, aber warum?
     
    Steglich, 22.11.2004
  8. Thommy

    ThommyMacUser Mitglied

    Mitglied seit:
    23.06.2003
    Beiträge:
    1.831
    Zustimmungen:
    0
    Achsoo, du meinst das 2. meldung==''.

    Jo stimmt. Da fehlt eine } vor dem
    if (meldung == '') {
    return true;
    }
     
    Thommy, 22.11.2004
  9. current

    currentMacUser Mitglied

    Mitglied seit:
    02.10.2004
    Beiträge:
    64
    Zustimmungen:
    1
    Weil du dass geschrieben hast
    Code:
    for ( ... ) {
        if (...) {
        }
    
        if (meldung = '') {
            return ...
        }
    }
    
    aber das meinst:
    Code:
    for ( ... ) {
        if (...) {
        }
    }
    if (meldung = '') {
        return ...
    }
    
     
    current, 22.11.2004
  10. current

    currentMacUser Mitglied

    Mitglied seit:
    02.10.2004
    Beiträge:
    64
    Zustimmungen:
    1
    Genau, das ist der Fehler. Gemeinerweise ist seine Einrückung richtig, aber seine Klammerung nicht.
     
    current, 22.11.2004
Die Seite wird geladen...