2010-11-05 10 views
5

Estoy buscando utilizar los atributos de datos html5 para pasar las reglas de validación a jquery.validate como un espacio de detención hasta que el complemento se actualice con soporte HTML5. Estoy usando jquery 1.4.2, jquery.validate 1.7 y jquery.validate 2.1. En mi HTML estoy usando código como este:datos jquery.validate, jquery.metadata y html5

<input name="foo" type="text" data-validate="{required:true,digits:true}" /> 

En mi jQuery estoy haciendo lo siguiente:

<script type="text/javascript"> 
$.metadata.setType ("html5"); 
$(function() 
{ 
    $('#myForm').validate ({debug:true}); 
}); 
</script> 

Esto sólo hace que un mensaje de error, validator.methods [método] es undefined

Hice un metadata() en el elemento con el atributo data-validate, y obtuve un objeto devuelto llamado validate con mis atributos establecidos en él, así que sé que los metadatos encuentran el atributo y la carga de él, pero el complemento de validación no parece poder manejarlo. Si vuelvo a class = "{validate: {...}}" y hago un comentario sobre la línea que configura los metadatos para usar HTML 5, todo funciona como debería.

¿Estoy haciendo algo mal o hay algún problema con los complementos de validación y/o metadatos?

Respuesta

4

Probar:

$.metadata.setType("html5"); 
$('#myForm').validate({ 
    meta: "validate" 
}); 

http://jsfiddle.net/petersendidit/5YND2/

+0

Esto parece funcionar, aunque tendré que probarlo el lunes en el trabajo para estar seguro. Además, gracias por el enlace al sitio jsfiddle, tendré que recordarlo. Parece un recurso útil. – GordonM

+0

De hecho, funciona en el código de transmisión, así que muchas gracias. – GordonM

9

En caso de que alguien se ejecuta a través de este uso de una nueva versión de jQuery, jQuery Validar y el plug-in de metadatos jQuery, toda la documentación que he encontrado para el uso de estos juntos esta fuera de fecha. Si bien el complemento jQuery Validate aún puede hacer uso de Metadatos jQuery, las versiones más recientes de Metadatos jQuery ya no son compatibles con "html5" porque jQuery ahora admite de forma nativa atributos de datos HTML5 como fuente de metadatos. Sin embargo, jQuery Validate no se ha actualizado para usar esto.

La solución para esto (al menos hasta que jQuery Validate se actualice para admitir el soporte integrado para metadatos utilizando data-attributes es usar el tipo 'attr' y apuntar directamente a su atributo de datos. Por ejemplo:

.
$.metadata.setType("attr", "data-validate"); 
$("form").validate(); 

Note que no hay necesidad de pasar la etiqueta "meta" porque la biblioteca de metadatos va directamente al atributo correcto para leer los valores Aquí está una jsFiddle modificado usando versiones actualizadas de todas las bibliotecas:

http://jsfiddle.net/Wcu4L/

+1

¿Puedo votar este 100? Pasé medio día tratando de descubrir cómo sacar el meta del atributo de clase y este comentario resolvió el problema. ¡Gracias! – Matt

+0

De acuerdo con Matt, esto ha ayudado a lo grande. Sorprendido de no ver el plugin de implementación de atributos de datos en sí ... – daddywoodland

+0

Solución brillante a un problema no documentado, que simplemente se vuelve loco. +1 en poder votar este 100. –