2011-11-24 15 views
12

Tengo un formulario que estoy usando html5 para validar el correo electrónico y los campos obligatorios. El formulario debe enviarse a través de ajax. ¿Cómo puedo determinar que el formulario pasó la validación antes de permitir que el formulario se envíe a través de ajax?Cómo comprobar si la validación del formulario html5 está completa

Esta es mi html:

<form action="" method="post" id="comment_form"> 
    <input type="hidden" name="post_id" value="<?=$post->ID ?>" /> 
    <label for="name">Name</label> 
    <input type="text" name="name" required="required"> 

    <label for="email">Email Address</label> 
    <input type="email" name="email" required="required"> 


    <label for="comment">Comment</label> 
    <textarea name="comment" required="required" > 
    </textarea> 


    <label for="submit"></label> 
    <button type="submit"class="button green meduim" id="comment_btn">Submit</button> 
</form> 

Ésta es mi jQuery

$("#comment_btn").click(function(e){ 
    //the request url 
    var url = site_url+'comments/post_comment'; 
    //cross site request forgery token 
    var xtoken = $("input[name='xtoken']").val(); 
    //post data 
    var dataObj = { 
    "name":$('#name').val(), 
    "email":$("#email").val(), 
    "comment":$("#comment").val(), 
    "post_id":$("input[name='post_id']").val(), 
    "xtoken":xtoken 
    }; 
    //dim form 
    $('#comment_form').addClass('dim'); 
    //make request 
    $.ajax({ 
    url:url, 
    type:'POST', 
    data:dataObj, 
    dataType:'json', 
    error:function() {}, 
    success:function(resp) { 
     if(resp.status == "ok") 
     { 
     $('#comment_form').removeClass('dim'); 
     }else { 
     alert("An error was encountered"); 
     } 
    } 
    }); 
    e.preventDefault(); 
}); 

¿Hay una manera de determinar si se valida el formulario?

+0

Usted puede decir 'required' en lugar de' required = "required" '. –

Respuesta

6

Puede usar la función form() del validador, p.

var validator = $("#comment_form").validate(options); 
if (validator.form()) { 
    // submit with AJAX 
} 
1

Es probablemente el mejor no confiar en el navegador para validar sus datos, seguro de usar y requiredpattern es fresco y todo, pero yo no iba a depender de ello.

Escriba su propia validación en su javascript antes de que los datos se envíen a su URL. Puede hacer esto con un poco de Regex o puede usar muchos de los complementos de validación de jQuery disponibles en el mercado, como h5validate o .

34

no se unen al evento clic del botón de enviar simplemente se unen al evento presentará de su formulario:

$('#comment_form').submit(function(e){ 
    e.preventDefault(); 
    //submit via ajax 
}); 
+0

Corto, conciso, hasta el punto = elegante. Esta es la mejor respuesta, por supuesto. – PALEN

+1

Esto debería ser aceptado como respuesta. –

0

Puede registrar en la forma estándar 'onSubmit' evento que será despedido si tiene forma pasó con éxito la validación y se está enviando.

document.getElementById("comment_form").onsubmit = myPassedValidationHandler; 
Cuestiones relacionadas