Martin Schneider
Grünschnabel
Hallo,
ich habe ein Problem mit meinem Script, welches ein Anmeldeformular checkt und dann abschicken soll.
Standardabfragen, ob Felder ausgefüllt sind, sind kein Problem.
Aber danach möchte ich über Ajax checken, ob der Username oder die Email-Adresse schon vergeben sind.
Wenn auch das passt, soll das Forumar abgeschickt werden. Allerdings tut er das nicht, da ich am ende 'return false' gesetzt habe.
Dies muss ich aber, da er das Formular sonst abschicken würde, ohne das Ajax-Script auszuführen.
Anbei nun mein Code.
Ich habe ein paar alerts eingefügt, um die Reihenfolge des Ablaufs zu prüfen.
Wenn alle eingaben Stimmen ist das die Reihenfolge: 1,6,2,3
Codeschnipsel (als PHP, damit es schön bunt ist ):
Nun die Frage: Warum überspringt er erst den Ajax-Code? Und wieso schickt er das Formular dann nicht ab, obwohl ich direkt nach alert('3'); return true ausgebe?
Danke für Eure Hilfe
Martin
ich habe ein Problem mit meinem Script, welches ein Anmeldeformular checkt und dann abschicken soll.
Standardabfragen, ob Felder ausgefüllt sind, sind kein Problem.
Aber danach möchte ich über Ajax checken, ob der Username oder die Email-Adresse schon vergeben sind.
Wenn auch das passt, soll das Forumar abgeschickt werden. Allerdings tut er das nicht, da ich am ende 'return false' gesetzt habe.
Dies muss ich aber, da er das Formular sonst abschicken würde, ohne das Ajax-Script auszuführen.
Anbei nun mein Code.
Ich habe ein paar alerts eingefügt, um die Reihenfolge des Ablaufs zu prüfen.
Wenn alle eingaben Stimmen ist das die Reihenfolge: 1,6,2,3
Codeschnipsel (als PHP, damit es schön bunt ist ):
PHP:
$("#register_form").submit(function(){
var nickname = $("#DNickname").attr("value");
var email = $("#eMail").attr("value");
var password = $("#Password").attr("value");
var day = $(".Tag");
var month = $(".Monat");
var year = $(".Jahr");
var tag = '';
var monat = '';
var jahr = '';
var gender = $("#gender")[0].selected;
var agb = $("#AGB")[0].checked;
var fehler = '';
for(var i = 0; i < day.length; i++){
if(day[i].selected==true) {
tag = day[i].value;
}
}
for(var i = 0; i < month.length; i++){
if(month[i].selected==true) {
monat = month[i].value;
}
}
for(var i = 0; i < year.length; i++){
if(year[i].selected==true) {
jahr = year[i].value;
}
}
if(nickname == ''){ fehler += '<li>Bitte gin einen Nicknamen ein</li>'; }
if(email == ''){ fehler += '<li>Gib bitte eine Email-Adresse an</li>'; }
if(password == ''){ fehler += '<li>Bitte gib ein Passwort ein</li>'; }
if(tag == '' || monat == '' || jahr == ''){ fehler += '<li>Bitte gib dein Geburtsdatum ein</li>'; }
if(tag == 31 && (monat == 2 || monat == 4 || monat == 6 || monat == 9 || monat == 11)){ fehler += '<li>Das Geburtsdatum ist ungültig</li>'; }
if(gender == true){ fehler += '<li>Bitte gib ein Geschlecht an</li>'; }
if(agb == false){ fehler += '<li>Du musst die AGB\'s annehmen</li>'; }
alert('1');
if(fehler == ''){
$.ajax({
type: "POST", url: "/ajax_reloader/register_check.php", data: "action=check&email=" + email + "&nickname=" + nickname,
complete: function(data){
alert('2');
if(data.responseText == 'okay'){
alert('3');
return true;
}else{
alert('4');
$("ul#Fehler > li").remove();
$("ul#Fehler").append(data.responseText);
}
}
});
}else{
alert('5'+fehler);
$("ul#Fehler > li").remove();
$("ul#Fehler").append(fehler);
}
alert('6');
return false;
});
Nun die Frage: Warum überspringt er erst den Ajax-Code? Und wieso schickt er das Formular dann nicht ab, obwohl ich direkt nach alert('3'); return true ausgebe?
Danke für Eure Hilfe
Martin