2011-12-26 19 views
7

He siguiente forma:enviar el formulario después de jquery de validación

<form id="form" action="comments.php" method="post"> 
    <ul> 
    <li><div class="formbox_titles">Name</div><input type="text" name="name" class="required comm_input" /></li> 
    <li><div class="formbox_titles">Email</div><input type="text" name="email" class="required comm_input"/></li> 
    <li><div class="formbox_titles">Message</div><textarea name="message" class="required comm_text"></textarea></li> 
    <li><input type="submit" value="Submit"></li> 
    </ul> 
</form> 

y después de jQuery para la forma de presentación:

target: '#preview', 
    success: function() { 
    $('#formbox').slideUp('fast'); 
} 

Ahora el problema es que también tengo forma de validación de código jQuery

$().ready(function() { 
    // validate comment form 
    $("#form").validate({ 
    }); 
}); 

Ambos funcionan muy bien y la forma no aparece avisando que los tres campos no pueden estar vacíos, pero la fecha en el formulario se envía a la base de datos de todos modos. Estoy usando el siguiente código para la validación de formulario http://bassistance.de/jquery-plugins/jquery-plugin-validation/ Entonces, la pregunta es cómo agregar primero jquery dentro del segundo, para que primero se ejecute una vez que se llenan los campos obligatorios.

Espero que alguien ayude. Gracias.

Respuesta

3

No sé nada acerca de su plug-in de validación, pero normalmente u podría utilizar esta paz de código

<script> 

    $("form").submit(function() { 
     if (validationIsTrue()) { 
     return true; 
     } 
     else { 
     return false; 
     } 
    }); 
</script> 

Usted tiene que hacer su validación y luego regresar verdadero/falso a la función de envío del formulario. Si el plugin no devolver un valor booleano, puede intentar algo como esto:

$("form").submit(function() { 
    return $(this).validate({ .... }); 
}); 
8

de su ejemplo, no estoy claro sobre el flujo de control de la página, sin embargo, estoy asumiendo que está llamando el método submit() algun lado. Después de validar el formulario y antes de enviarlo, verifique su validación con el método valid(). El código debería ser algo como esto:

$("#form").validate(); 
if ($('#form').valid()) 
    $('#form').submit(); 
2

Cuando dice que la "fecha dentro de formulario se envía" eso no tiene sentido para mí, porque en sus fragmentos de código que veo nada llamado "fecha".

He utilizado el .validate() plug-in ampliamente ... Lo que yo puedo decir que puede ayudar es que la validación plugin que está utilizando tiene una función submitHandler que se puede utilizar ...

// validate comment form 
$("#form").validate({ 
submitHandler : function(form) { 
    //do something here 
    form.submit(); 
} 
}); 

El submitHandler se invoca solo si se cumplen todas las reglas de validación. A saber, en su caso, tiene tres campos con "obligatorio", lo que significa que este formulario NO se enviará a menos que los tres campos tengan un valor.

Con eso, puedo asegurarle que con la información proporcionada, no hay nada que indique el problema que está describiendo. Proporcionar más y mejor información nos ayudará a descubrir qué está mal.

9

Si desea enviar el formulario manualmente, debe omitir el evento jQuery bound. Puede hacerlo en cualquiera de estas maneras:

$('#form_id')[0].submit(); 

o

$('#form_id').get(0).submit(); 

[0] o get (0) le da el objeto DOM en lugar del objeto jQuery.

+1

Gracias por señalar eso ...Estaba buscando esto ya que tengo un evento obligado a enviar el formulario, pero antes de que realmente envíe el formulario, tengo que hacer una solicitud de AJAX y si la condición es verdadera, envío el formulario y allí necesito el bypass. +1 –

Cuestiones relacionadas