Ver Mensaje Individual
  #8 (permalink)  
Antiguo 20/04/2018, 20:23
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema al devolver resultado de una funcion

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 original
  1. var flagNombre = false, //Comodín o bandera del nombre
  2.     flagFormulario = true; //Comodín o bandera del formulario
  3.  
  4. function nuevoUsuario(nombre){
  5.     verificarDisponibilidad(nombre).then(function(respuesta){
  6.         if (!respuesta){ //Cero equivale a "false"
  7.             flagNombre = true; //Si el nombre no se encuentra registrado, se habilita al comodín del nombre
  8.         }
  9.         else{
  10.             alert("El nombre ya se encuentra registrado");
  11.         }
  12.     });
  13. }
  14.  
  15. function verificarDisponibilidad(nombre){
  16.     return new Promise(function(exito, error){
  17.         var xhr = new XMLHttpRequest();
  18.  
  19.         xhr.open("GET", "verificar.php?nombre=" + nombre);
  20.         xhr.send();
  21.         xhr.addEventListener("load", function(){
  22.             if (this.status == 200){
  23.                 exito(this.responseText); //La respuesta será el número de coincidencias del nombre en la base de datos
  24.             }
  25.         }, false);
  26.     });
  27. }
  28.  
  29. function validar(form){
  30.     for (var i = 0, f = form.elements, l = f.length; i < l; i++){
  31.         if (/* si el valor de f[i] no es válido */){
  32.             flagFormulario = false; //Se deshabilita el comodín del formulario
  33.             break; //Y se termina el bucle
  34.         }
  35.     });
  36.  
  37.     if (flagNombre && flagFormulario){
  38.         //Si ambos comodines son verdaderos, se envía el formulario
  39.     }
  40. }

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand