2011-09-12 19 views
31

Estoy tratando de usar el método de forma checkValidity().html5 formulario checkValidity() método no encontrado

http://html5test.com/ me dice que mi navegador (Chrome) es compatible con el método checkValidity de nivel de formulario.

Sin embargo, el uso de jsFiddle http://jsfiddle.net/LcgnQ/2/ me han tratado los siguientes fragmentos de HTML y JavaScript:

<form id="profileform" name="profileform"> 
    <input type="text" id="firstname" required> 
    <input type="button" id="testbutton" value="Test"> 
</form> 

$('#testbutton').bind('click',function(){ 

    try{ 
    alert($('#profileform').checkValidity()); 
    } 
    catch(err){alert('err='+err)}; 
}); 

Recibo un error: object has no method checkValidity()

¿Qué estoy haciendo mal?

Gracias.

+0

Aquí http://stackoverflow.com/questions/28979662/common-jquery-to-disable-submit-buttons-on-all-forms-after-html5-validation/36391754#36391754 puedes encontrar mi más "genérico" "y solución completa. – Petr

+0

puedes probar: 'document.getElementById (" profileform "). CheckValidity()' – sept08

Respuesta

72

Probar:

$('#profileform')[0].checkValidity() 

Al seleccionar $('#profileform') se obtiene un conjunto de nodos, para acceder a propiedades DOM reales que debe seleccionar la primera.

+0

genial, gracias Robert – Journeyman

+2

@robertc ¿Puedes explicar por qué funciona esto, y por qué no funciona seleccionar el elemento directamente? – xdumaine

+12

@roviuser Como '$ ('# profileform')' no selecciona el elemento directamente, selecciona un objeto jQuery que contiene (entre otras cosas) el elemento. – robertc