2011-01-14 26 views
7

Estoy utilizando el complemento de validación jquery.Validación de Ajax usando jquery?

En mi formulario necesito comprobar si el apodo ya está en uso o no.

Para que están proporcionando la clave remote para hacer una llamada ajax. Para mí, la llamada ajax funciona correctamente en y devuelve verdadero o falso. Pero está permitiendo incluso si el valor devuelto es falso, que no debería suceder.

Mi código de validación se parece,

$(function() { 
    $("#myform").validate({ 
     rules: { 
      fullName: { 
       required: true, 
       minlength: 5 
      }, 
      nickName: { 
       required: true, 
       minlength: 4, 
       alphaNumeric: true, 
       remote: { 
        url: "NickNameChecker", 
        type: "post", 
        data: { 
         nickName: function() { 
         return $("#nickName").val(); 
        }}, 
        success: function(data) { 
         return data; 
        } 
       } 
      } 
     }, 
     messages: { 
      fullName: { 
       required: "Please Enter Your Full Name.", 
       minlength: "Full Name should have minimum 5 letters." 
      }, 
      nickName: { 
       required: true, 
       minlength: "Nick Name should contain minimum 4 letters.", 
       remote: "This nickname is already in use." 
      } 
     } 
    }); 
}); 

Cualquier sugerencia sería agradecida !!!

Gracias!

Solución:

La solución es única en mi código.

Acabo de eliminar la parte de éxito y lo intenté. ¡Funciona muy bien!

+1

¿Cuál es el valor de retorno de la página remota? – Chandu

+0

@Cybernate: Si nick no está en uso 'true' de lo contrario' falso' –

+3

@TamilVendhan: No soy un experto en la opción 'remote', pero ninguno de los ejemplos que pude encontrar mostró la opción' success' que se especifica. –

Respuesta

1

(explicación ampliada del comentario anterior):

La opción success no es válido para la validación remota de jQuery validar. Usted debe ser capaz de simplemente especificar una dirección URL para acceder a la validación que devuelve verdadero o un mensaje de valor/error Falsy:

El recurso serverside se llama a través de $ .ajax (XMLHttpRequest) y consigue un clave/valor par, que corresponde al nombre del elemento validado y su valor como un parámetro GET. La respuesta se evalúa como JSON y debe ser verdadera para los elementos válidos, y puede ser falsa, indefinida o nula para los elementos no válidos , utilizando el mensaje predeterminado; o una cadena

Véase el documentation for remote para obtener más información sobre cómo utilizar la opción. Su código probablemente se vería algo como esto:

$(function() { 
    $("#myform").validate({ 
     rules: { 
      fullName: { 
       required: true, 
       minlength: 5 
      }, 
      nickName: { 
       required: true, 
       minlength: 4, 
       alphaNumeric: true, 
       remote: { 
        url: "NickNameChecker", 
        type: "post", 
        data: { 
         nickName: function() { 
         return $("#nickName").val(); 
        } 
       } 
      } 
     }, 
     messages: { 
      fullName: { 
       required: "Please Enter Your Full Name.", 
       minlength: "Full Name should have minimum 5 letters." 
      }, 
      nickName: { 
       required: true, 
       minlength: "Nick Name should contain minimum 4 letters.", 
       remote: "This nickname is already in use." 
      } 
     } 
    }); 
}); 
0

El equipo jQuery Validación aconsejó otra forma de manejar las API no booleanas in this GitHub issue.

El método propuesto aprovecha la propiedad dataFilter de jQuery.ajax().

form.validate({ 
    rules: { 
     username: { 
      required: true, 
      remote: { 
       url: "users2.json.php", 
       dataFilter: function(data) { 
        var json = JSON.parse(data); 
        if(json.status === "success") { 
         return '"true"'; 
        } 
        return "\"" + json.error + "\""; 
       } 
      } 
     } 
    } 
}); 
Cuestiones relacionadas