2011-11-08 12 views
8

Estoy tratando de obtener el plugin de validación jQuery trabajar con onkeyup o onfocusout opciones. Cada vez que agrego estas opciones y disparo una de ellas, aparece un error. La validación funciona si envío mi formulario.f.settings [g] .call no es una función con otra cosa que presentar la validación

No tengo permitido publicar el formulario en el que estoy trabajando, sin embargo, he creado problemas similares con un formulario muy simple que acababa de cargar en un directorio con todos los js en los subdirectorios static/js /.

estoy usando jQuery 1.6.2 y validación jQuery 1.9.0

Alguien tiene alguna idea?

<html> 
<script type="text/javascript" src="static/js/jquery.js"></script> 
<script type="text/javascript" src="static/js/jquery.validate.js"></script> 

<script type="text/javascript"> 
$(document).ready(function(){ 

    var validator = $('#submitform').validate({ 
     rules: { 
      name: 'required', 
      phone: { 
       required: true, 
       minlength: 12 
      }, 
      team: { 
       required: true, 
       minlength: 1 
      }, 
      fax: { 
       required: true, 
       minlength: 12 
      } 
     }, 
     messages: { 
      name: 'Your name is required', 
      phone: 'Your phone number is required', 
      team: 'Your extension number is required', 
      fax: 'Your fax number is required' 
     }, 
     // the errorPlacement has to take the table layout into account 
     errorPlacement: function(error, element) { 
      if (element.is(":radio")) 
       error.appendTo(element.parent().next().next()); 
      else if (element.is(":checkbox")) 
       error.appendTo (element.next()); 
      else 
       error.appendTo(element.parent()); 
     }, 
     onfocusout: true, 
     // specifying a submitHandler prevents the default submit, good for the demo 
     submitHandler: function() { 
      alert("submitted!"); 
     }, 
     // set this class to error-labels to indicate valid fields 
     success: function(label) { 
      // set as text for IE 
      label.html(" ").addClass("checked"); 
     } 
    }); 
}); 
</script> 

<form id="submitform" action="."> 

<label for="name">Your Name:</label> 
<input id="ins_name" type="text" name="name" maxlength="40" /> 

<label for="phone">Phone:</label> 
<input name="phone" maxlength="14" type="text" id="phone" /> 

<label for="extension">Extension:</label> 
<input name="extension" maxlength="10" type="text" id="extension" /> 

<label for="fax">Fax:</label> 
<input name="fax" maxlength="14" type="text" id="fax" /> 

<input type="submit" value="Submit"> 
</form> 
+0

Voy a adivinar que onfocusout debería ser una función. – AutoSponge

+0

Según los documentos, solo es una opción: http://docs.jquery.com/Plugins/Validation/validate#toptions – grantk

+0

las opciones son propiedades del objeto de configuración, sus valores pueden ser cualquier cosa. En este caso, supongo que el tipo debería ser función porque es para un controlador de eventos (es común en jQuery) y simplemente no estaba bien documentado (como la mayoría de los complementos). – AutoSponge

Respuesta

14

Como se indicó anteriormente, la documentación es defectuosa. De hecho, necesita establecer la opción onfocusout en una función que acepte el elemento validado como parámetro. Aquí está un ejemplo de código de trabajo:

$("#form").validate({ 
    onfocusout: function(element) {$(element).valid()} 
}); 
1

en mi caso había una línea onkeyup: true entonces yo lo cambió a false

onkeyup: false 

pero todavía no se sabe cuándo el error comenzó a venir. :)

Cuestiones relacionadas