2010-05-22 20 views
10

Esto es lo que estoy usando actualmente para intentar validar un formulario. Cuando presiono enviar sin valores ingresados ​​en el formulario, obtengo los mensajes de error para cada una de las entradas como se esperaba. Sin embargo, no importa lo que puse en newpassword2 o newemail2, nunca pasan la validación. He intentado todo, desde copiar y pegar hasta hacer una letra para que no tengan éxito. Quizás no estoy usando el atributo equalTo correctamente ...jQuery Validation Plugin + equalTo Not Working

También he verificado que todos los nombres de los selectores coinciden con los ID de entrada en el formulario. Además, todas las entradas están contenidas en el formulario, por lo que no hay ninguna fuera de las etiquetas de formulario (he leído que era un problema con otra persona).

$(document).ready(function() { 
    $("#account_data").validate({ 
     rules: { 
      newpassword1: { required: true }, 
      newpassword2: { equalTo: "#newpassword1" }, 
      newemail1: { required: true, email: true }, 
      newemail2: { equalTo: "#newemail1" } 
     } 
    }); 
}); 

¡Cualquier ayuda sería extremadamente apreciada!

GRACIAS!

-Tom-

+0

Esta cuestión se ha resuelto ... casi por pura suerte. Vea a continuación para las actualizaciones. –

+2

Si la pregunta se ha resuelto, debe aceptar la solución adecuada ... – dule

Respuesta

1

@ Tom tratar

 newpassword1: { required: true }, 
     newpassword2: { required: true,equalTo: "#newpassword1"}, 
     newemail1: { required: true, email: true }, 
     newemail2: { required: true,email: true ,equalTo: "#newemail1" } 

o usar la versión más reciente del plug-in de validación

Ahora las reglas han añadido con ser contraseña requerida establece en true y la segunda condición es para password_again establecido en true requerido y tiene que "equalTo" en el campo de entrada con id de contraseña. Con estas condiciones establecidas, podemos lograr lo que queremos. No olvides consultar la demostración de la publicación para ver cómo funciona. Para obtener más documentación y recursos sobre este plugin, visite jQuery Validation Plugin

+2

¿Sabes qué? Lo tengo para trabajar exactamente con el mismo código que publiqué en mi publicación original. Todo lo que modifiqué fue el uso de un id Y nombre para las entradas del formulario. No sé si esto es necesario, sin embargo, como el nombre no valida en (X) HTML Strict si recuerdo correctamente. De todos modos, el complemento de validación está funcionando bien, y mi pregunta ahora está obsoleta ... ¡perdón por perder el tiempo! ¡Por cierto, agregué en los otros atributos que sugirió y todavía funcionó bien! ¡GRACIAS POR SU AYUDA! -Tom- –

3

Tuve el mismo problema que Tom. La solución fue crear una identificación para los campos de contraseña que coincidían con los nombres de los campos de contraseña. (Como lo menciona Tom). Definitivamente un error en el código de validación, ya que solo debe confiar en el campo de nombre. Oh, bueno ...

-Greg

7

Cuando se utiliza el equalTo usted tiene que utilizar el nombre y la forma de identificación. Por ejemplo:

<input type="password" name="password" id="password" value="" /> 
<input type="password" name="password_mirror" value="" /> 

$("#register_user").validate({ 
     rules: { 
      'password_mirror': { 
       minlength: 5, 
       equalTo: "#password" 
      } 
     }, 
     messages: { 
      'password_mirror': { 
       minlength: "Your password must be at least 5 characters long", 
       equalTo: "Please enter the same password as above" 
      } 
     } 
    }); 
17

Si va a usar id = "contraseña", no funcionará. Debe usar otro nombre para identificación.

Todas las claves en las normas objeto referirse a la input.name y no input.id

+0

Brilliant! Gracias. –

+1

cualquier explicación? No puedo ver por qué después de leer el código fuente. – youzipi

+0

Yo también tengo curiosidad sobre el "por qué" aquí –

0

Antes de utilizar "equalTo" tenemos que cuidar siguientes puntos:

  1. Uso palabra diferente para la entrada de nombre del elemento y carné de identidad.

  2. uso Identificación del elemento de entrada en el partido "equalTo" en lugar de entrada del nombre del elemento:

<html> 
 
<head> 
 
    <title></title> 
 
    <script src="jquery-1.12.0.min.js"></script> 
 
    <script src="jquery.validate.min.js"></script> 
 
    <script> 
 
      $(document).ready(function(){ 
 
        $('#btnSubmit').click(function(){ 
 
         $("form").validate({ 
 
         rules: { 
 
          pwd: { 
 
           required: true, 
 
           minlength : 6 
 
          }, 
 
          conf_pwd: { 
 
            required: true, 
 
            minlength : 6, 
 
            equalTo: "#id_pwd" 
 
           } 
 
         }, 
 
         messages: { 
 
           pwd: { 
 
            required: "Please enter the password.", 
 
            minlength: "Your password must be at least 6 characters long" 
 
           }, 
 
           conf_pwd: { 
 
           required: "Please enter the confirm password.", 
 
           minlength: "Your password must be at least 6 characters long", 
 
           equalTo: "Please enter the same password as above" 
 
           } 
 
         }, 
 
         submitHandler: function(form) { 
 
           form.submit(); 
 
         } 
 
      }); 
 
        }); 
 
      }); 
 
    </script> 
 
</head> 
 
<body> 
 
     <div> 
 
     <form id="data" action="" method="post"> 
 
     <div class="form-group row"> 
 
     <label>Password:</label> 
 
      <div> 
 
      <input id="id_pwd" name="pwd" type="password" /> 
 
      </div> 
 
     </div> 
 
     <div> 
 
     <label>Confirm Password:</label> 
 
      <div> 
 
      <input id="id_conf_pwd" name="conf_pwd" type="password" /> 
 
      </div> 
 
     </div> 
 
     <div> 
 
     <div> 
 
      <div> 
 
\t \t  <input type="submit" id="btnSubmit" name="submit" value="Reset Password"> 
 
\t  </div> 
 
     </div> 
 
     </div> 
 
    </form> 
 
     </div> 
 
</body> 
 
</html>