Una de las comprobaciones es ver si el nombre de usuario introducido ya existe en la base de datos y al mostrarse la caja de texto, funciona perfectamente.
El problema viene cuando quiero retornar, si la función es verdadera o falsa, ya que además de comprobar el nombre de usuario, tambien se hacen otras comprobaciones.
La función JavaScript que uso es la siguiente:
Código PHP:
function verifyName(){
var name = document.register.name.value
var div_failed = document.getElementById("name_register_failed")
var div_success = document.getElementById("name_register_success")
div_failed.style.display="none"
div_success.style.display="none"
var namevalid = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890-!¡ºª._="
var nameok = "yes"
var nameexists = "no"
var error = 0
$.post("ajax_invoke/verify_register.php?act=name", { name: name }, function(data){
if(data == "1"){
error = 1
div_failed.innerHTML="Lo sentimos, este nombre ya está en uso"
}
for (var i=0; i<name.length; i++) {
nametemp = "" + name.substring(i, i+1);
if (namevalid.indexOf(nametemp) == "-1") nameok = "no";
}
if(name.length > 14){
error = 1
div_failed.innerHTML="Tu nombre no puede tener más de 14 caracteres"
}
else if(name == ""){
error = 1
div_failed.innerHTML="Necesitas un nombre... ^^\'"
}
else if(nameok == "no"){
error = 1
div_failed.innerHTML="Tu nombre tiene caracteres ilegales. Caracteres válidos:\nqwertyuiopasdfghjklzxcvbnm QWERTYUIOPASDFGHJKLZXCVBNM 1234567890-!¡ºª._="
}
if(error == 1){
div_failed.style.display="block"
return false;
}
else{
div_success.style.display="block"
return true;
}
});
}
Código PHP:
function processRegister(){
verifyName()
verifyTibiaAccount()
verifyPass1()
verifyPass2()
verifyEmail1()
verifyEmail2()
verifyYear()
if(verifyName() && verifyPass1() && verifyPass2() && verifyEmail1() && verifyEmail2() && verifyYear()){
document.register.submit()
}
else{
window.alert('El formulario contiene errores. Por favor, corrígelos.');
}
}
La idea quizás sería añadir un retardo, aunque este retardo no sería del todo fiable ya que dependería de algunas condiciones en ese momento. Entonces me gustaría que se retornara cuando JQuery hubiera terminado de preguntar a otro script PHP.
Gracias por la ayuda