Jag vill validera ett formulär innan det skickas. När jag validerar det så kollar jag om användarnamnet är upptaget med hjälp av jquery $.get(). Men jag får det inte riktigt att fungera. Lite hjälp skulle uppskattas.
Felet är att formuläret aldrig skickas. Om allting är rätt ifyllt, kommer alert rutan upp med texten: "du har fyllt i allting rätt". Men formuläret submitas ändå inte.
Alltså användarnamnet är menat att skickas med och den kollar sedan om användarnamnet redan existerar i databasen. Den returnerar "bilder/kryss.png" eller "bilder/check.png" beroende på om användarnamnet är upptaget eller inte.
För att förklara lite bättre vad jag tror problemet är. Här är valideringskoden:
$(document).ready(function(){
/* Validerar innan publicering */
$("#skapa_en_blogg").submit(function(e){
var epost_value = $("#epost").val();
var blogg_adress_value = $("#blogg_adress").val();
var password_value = $("#password").val();
var repeat_password_value = $("#repeat_password").val();
var return_var = false;
$.get("test2.php?q="+blogg_adress_value, function(result){
if(/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/.test(epost_value) && result == "bilder/check.png" && /^[a-zA-Z0-9]{5,}$/.test(blogg_adress_value) && /^[a-zA-Z0-9]{5,}$/.test(repeat_password_value) && repeat_password_value == password_value){
[B]alert("Du har fyllt i allting rätt");[/B]
return_var = true;
}else{
alert("Du har fyllt i någon uppgift fel");
}
});
[B]return return_var;[/B]
});
});
"alert("Du har fyllt i allting rätt");" körs. Men "return return_var;" returnar av någon anledning ändå false.
Ja? Läs hur AJAX fungera, första A:et i AJAX betyder: Asynchronous.
din JS kod körs inte uppifrån och ner utan den kör metoden färdig och sen om AJAX koden hinner bli färdig innan du kör formuläret, då retunera den din message box... men den har inget med din submit att göra om hur den skall retuneras.
$("#skapa_en_blogg").bind("submit.reg", function ( e ) {
var that = this;
var epost_value = $("#epost").val();
var blogg_adress_value = $("#blogg_adress").val();
var password_value = $("#password").val();
var repeat_password_value = $("#repeat_password").val();
$.get("test2.php?q="+blogg_adress_value, function(result){
if(/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/.test(epost_value) && result == "bilder/check.png" && /^[a-zA-Z0-9]{5,}$/.test(blogg_adress_value) && /^[a-zA-Z0-9]{5,}$/.test(repeat_password_value) && repeat_password_value == password_value){
alert("Du har fyllt i allting rätt");
that.submit();
}else{
alert("Du har fyllt i någon uppgift fel");
}
});
return false;
});
Ja? Läs hur AJAX fungera, första A:et i AJAX betyder: Asynchronous.
din JS kod körs inte uppifrån och ner utan den kör metoden färdig och sen om AJAX koden hinner bli färdig innan du kör formuläret, då retunera den din message box... men den har inget med din submit att göra om hur den skall retuneras.
Jag förstår inte riktigt vad du menar! Hur kan jag då få "return return_var;" att köras efter allt annat?