Es extraño que sigas teniendo ese problema, pues, en realidad, es una cuestión tan fácil de resolver como te lo expliqué. Sería útil ver el código actualizado para poder analizar mejor la situación actual. Si vas a colocar el código, por favor, usa el
highlight de "JavaScript" para el código JavaScript y el de "HTML" para el código HTML. Eso permitirá que el código sea más legible. No olvides indentarlo (la sangría del código).
En cuanto a lo otro, puedes utilizar dos variables a manera de comodines o banderas que tengan un valor determinado, como
true
y
false
. Cuando las validaciones, tanto del nombre como del resto de datos, sean exitosas, entonces habilitas a ambas banderas (
true
), caso contrario, las deshabilitas (
false
). Mediante una condición, si ambas banderas son válidas, permites el envío de los datos del formulario, que bien puedes hacerlo con AJAX o con el método
.submit()
.
Código Javascript
:
Ver originalvar flagNombre = false, //Comodín o bandera del nombre
flagFormulario = true; //Comodín o bandera del formulario
function nuevoUsuario(nombre){
verificarDisponibilidad(nombre).then(function(respuesta){
if (!respuesta){ //Cero equivale a "false"
flagNombre = true; //Si el nombre no se encuentra registrado, se habilita al comodín del nombre
}
else{
alert("El nombre ya se encuentra registrado");
}
});
}
function verificarDisponibilidad(nombre){
return new Promise(function(exito, error){
var xhr = new XMLHttpRequest();
xhr.open("GET", "verificar.php?nombre=" + nombre);
xhr.send();
xhr.addEventListener("load", function(){
if (this.status == 200){
exito(this.responseText); //La respuesta será el número de coincidencias del nombre en la base de datos
}
}, false);
});
}
function validar(form){
for (var i = 0, f = form.elements, l = f.length; i < l; i++){
if (/* si el valor de f[i] no es válido */){
flagFormulario = false; //Se deshabilita el comodín del formulario
break; //Y se termina el bucle
}
});
if (flagNombre && flagFormulario){
//Si ambos comodines son verdaderos, se envía el formulario
}
}