Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/09/2010, 05:07
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Problema al validar nick con jquery.validate()

Buenos días,

Estoy usando la librería jquery.validate y la verdad es que va muy bien.
Sin embargo, me gustaría comprobar si el nick que está escribiendo el usuario está en la base de datos o no.

Esta parte la tengo, pero solo me muestra el mensaje de excepción "El usuario ya existe" cuando el usuario ya existe. Me gustaría mostrar también un mensaje diciendo "Usuario disponible" cuando este no exista.

Se le puede decir al jquery que muestre ese mensaje?

Ahora mismo tengo lo siguiente:

index.php
Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2.     <head>
  3.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4.         <title>Formulario Validation</title>
  5.         <link type="text/css" href="css/estilo.css" rel="stylesheet" />
  6.         <script type="text/javascript" src="js/jquery-1.4.2.js"></script>
  7.         <script type="text/javascript" src="js/jquery.validate.js"></script>
  8.         <script type="text/javascript">
  9.             $(document).ready(function(){
  10.                 $.validator.addMethod("regex",function(value,element,regexp){
  11.                     var re= new RegExp(regexp);
  12.                     return this.optional(element) || re.test(value);
  13.                 },"Solo caracteres alfanumericos");
  14.                 $("#registro").validate({
  15.                     rules:{
  16.                             usuario:{
  17.                                 required:true,
  18.                                 regex:"^[a-zA-Z0-9_]+$",
  19.                                 remote:"comprobar.php"
  20.                             },
  21.                             pass:{
  22.                                 required:true
  23.                             },
  24.                             pass2:{
  25.                                 equalTo:"#pass"
  26.                             },
  27.                             email:{
  28.                                 email:true,
  29.                                 required:true
  30.                             },
  31.                             sitioweb:{
  32.                                 url:true
  33.                             },
  34.                             lenguaje:{
  35.                                 required:true
  36.                             }
  37.                     },
  38.                     messages:{
  39.                         usuario:{
  40.                             required:"Campo obligatorio",
  41.                             remote:"El usuario ya existe"
  42.                         },
  43.                         pass:{
  44.                             required:"Campo obligatorio"
  45.                         },
  46.                         pass2:{
  47.                             equalTo:"La contraseña no es igual"
  48.                         },
  49.                         email:{
  50.                             email:"El email no es valido",
  51.                             required:"Campo es obligatorio"
  52.                         },
  53.                         sitioweb:{
  54.                             url:"La url no es valida"
  55.                         },
  56.                         lenguaje:{
  57.                             required:"Campo obligatorio"
  58.                         }
  59.                     },
  60.                     submitHandler:function(){
  61.                         alert("Los datos han sido enviados");
  62.                     }
  63.                 })
  64.             })
  65.         </script>
  66.     </head>
  67.     <body>
  68.         <fieldset>
  69.             <legend>Ingreso de usuario</legend>
  70.             <form id="registro" name="registro" action="">
  71.                 <div>
  72.                     <label class="campo">Usuario:</label>
  73.                     <input type="text" id="usuario" name="usuario" />
  74.                 </div>
  75.                 <div>
  76.                     <label class="campo">Contraseña:</label>
  77.                     <input type="text" id="pass" name="pass" />
  78.                 </div>
  79.                 <div>
  80.                     <label class="campo">Repetir:</label>
  81.                     <input type="text" id="pass2" name="pass2" />
  82.                 </div>
  83.                 <div>
  84.                     <label class="campo">Email:</label>
  85.                     <input type="text" id="email" name="email" />
  86.                 </div>
  87.                 <div>
  88.                     <label class="campo">Sitio web:</label>
  89.                     <input type="text" id="sitioweb" name="sitioweb" />
  90.                 </div>
  91.                 <div>
  92.                     <label class="campo">Lenguaje:</label>
  93.                     <select id="lenguaje" name="lenguaje">
  94.                         <option selected="selected" value="">Selecione un lenguaje</option>
  95.                         <option value="1">PHP</option>
  96.                         <option value="2">JAVA</option>
  97.                         <option value="3">ASP.NET</option>
  98.                     </select>
  99.                 </div>
  100.                 <input type="submit" value="Registrar" />
  101.             </form>
  102.         </fieldset>
  103.     </body>
  104. </html>

comprobar.php
Código PHP:
Ver original
  1. <?php
  2. $formUsuario=$_GET['usuario'];
  3. $conexion = mysql_connect("localhost", "root", "xxxx");
  4. mysql_select_db("usuarios");
  5. $sql = "SELECT id from users where username='$formUsuario'";
  6. $resultado = mysql_query($sql, $conexion);
  7. if(mysql_fetch_assoc($resultado)){
  8.     echo "false";
  9. }else{
  10.     echo "true";
  11. }
  12. ?>

Si el usuario no existe en la base de datos devuelvo un TRUE a la función jquery

usuario:{
required:true,
regex:"^[a-zA-Z0-9_]+$",
remote:"comprobar.php"
},


Pero los mensajes solo he conseguido que salgan cuando recibo un false

¿Se os ocurre alguna forma de lograrlo?

Mil gracias de antemano!