• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Kommentar-Form

Adroxxx

Neues Mitglied
Hallo!

Ich bastle an einer Kommentar-Form herum:
345hd2g.jpg



Wenn jetzt jemand auf Kommentar hinterlassen drückt und nicht alle Felder ausgefüllt sind, dann soll eine Nachricht kommen:
ygyz8.jpg



So, jetzt zu meinem Problem. Wenn jemand alle Daten eingibt, aber die E-Mail zu kurz ist, dann soll da stehen: "Bitte geben Sie eine richtige E-Mail-Adresse ein. Sollte jemand den Sicherheitscode nicht eingeben, aber alles andere schon, dann soll stehen "Bitte geben Sie den Sicherheitscode richtig ein". Das Ganze funktioniert nur halbwegs, denn, wenn jemand die E-Mail zu kurz eingibt, erscheint zuerst das Fenster "Bitte tragen Sie in alle Felder ein!" und danach, wenn man auf OK klickt erst die Nachricht "Bitte geben Sie eine richtige E-Mail-Adresse ein". Ich will, dass nur das mit der richtigen E-Mail-Adresse erscheint und das andere nicht. Wie kann ich das realisieren?

Mein Code:
Code:
function checkComment(form){
    var chekmail = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
    var name, email, comment, string, isOk = true;
    message = $.msgbox('Bitte tragen Sie in alle Felder ein!', {type:'alert', buttons: [{type: 'submit', value: 'OK'}]});
    name        = form.name.value;    
    email        = form.email.value;
    kommentar    = form.kommentar.value;
    code        = form.code.value;

    if (name.length==0){
        form.name.focus();
        isOk=false;
    }
    
    else if (email.length<5){
        form.email.focus();
        isOk=false;
    }    
    else if (email.length>=5 && email.match(chekmail)==null){
        $.msgbox('Bitte geben Sie eine richtige E-Mail-Adresse ein!', {type:'alert', buttons: [{type: 'submit', value: 'OK'}]});
        form.email.focus();
        isOk=false;
    }
    else if (kommentar.length==0){
        form.kommentar.focus();
        isOk=false;
    }
    
    else if (code.length==0){
        $.msgbox('Bitte geben Sie den Sicherheitscode richtig ein!', {type:'alert', buttons: [{type: 'submit', value: 'OK'}]});
        form.code.focus();
        isOk=false;
    }
    if (!isOk){               
        message;
        return isOk;
    } 
    else {
        return isOk;
    }
}
</script>
 
Moderation: Habe dein Topic von PHP zu JavaScript verschoben, da deine Frage JavaScript betrifft.

Das Problem wird dadurch verursacht, dass Du hier

Code:
message = $.msgbox('Bitte tragen Sie in alle Felder ein!', {type:'alert', buttons: [{type: 'submit', value: 'OK'}]});

eben diese Nachricht zuviel für die Message-Box setzt. Daher kommt diese Meldung immer. Lass das weg

Code:
message = "";

und es sollte klappen.
 
Danke für das Verschieben und für deine Antwort.

Aber leider funktioniert das immernoch nicht
Code:
function checkComment(form){
    var chekmail = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
    var name, email, comment, string, isOk = true;
    message = "";
    name        = form.name.value;    
    email        = form.email.value;
    kommentar    = form.kommentar.value;
    code        = form.code.value;

    if (name.length==0){
        form.name.focus();
        isOk=false;
    }
    
    else if (email.length<5){
        form.email.focus();
        isOk=false;
    }    
    
    else if (email.length>=5 && email.match(chekmail)==null){
        $.msgbox('Bitte geben Sie eine richtige E-Mail-Adresse ein!', {type:'alert', buttons: [{type: 'submit', value: 'OK'}]});
        form.email.focus();
        isOk=false;
    }
    
    else if (kommentar.length==0){
        form.kommentar.focus();
        isOk=false;
    }
    
    else if (code.length==0){
        $.msgbox('Bitte geben Sie den Sicherheitscode richtig ein!', {type:'alert', buttons: [{type: 'submit', value: 'OK'}]});
        form.code.focus();
        isOk=false;
    }
    
    if (!isOk){               
        $.msgbox('Bitte tragen Sie in alle Felder ein!', {type:'alert', buttons: [{type: 'submit', value: 'OK'}]})
        return isOk;
    } 
    
    else {
        return isOk;
    }
}
</script>

Ich glaube, es muss an diesem
Code:
if (!isOk){               
        $.msgbox('Bitte tragen Sie in alle Felder ein!', {type:'alert', buttons: [{type: 'submit', value: 'OK'}]})
        return isOk;
    }
liegen. Denn damit kommt diese Meldung jedes mal, wenn isOk falsch, sprich, wenn irgendetwas in einem Feld nicht stimmt. Es soll aber nicht kommen, wenn die E-Mail zu kurz ist, oder wenn der Sicherheitscode falsch eingegeben wurden. Nur wenn die E-Mail bzw. der Code LEER sind.
 
Hast recht. Dann solltest Du eine weitere Variable setzen und prüfen.

Code:
else if (email.length>=5 && email.match(chekmail)==null){
        $.msgbox('Bitte geben Sie eine richtige E-Mail-Adresse ein!', {type:'alert', buttons: [{type: 'submit', value: 'OK'}]});
        form.email.focus();
        isOk=false;
        noErrorMessage=true;
    }

und

Code:
if (!isOk){               
        if( !noErrorMessage )$.msgbox('Bitte tragen Sie in alle Felder ein!', {type:'alert', buttons: [{type: 'submit', value: 'OK'}]})
        return isOk;
    }
 
Sag doch gleich, dass ich bei allen anderen Bedingungen noErrorMessage=false; schreiben muss :P

Aber vielen Dank für deine Hilfe, alles funktioniert nun, wie es soll!
 
Zurück
Oben