$ (formulario) .ajaxSubmit no es una función

Estoy tratando de usar el complemento de validación jquery para validar un formulario y enviar el contenido con una solicitud ajax.

Este código está en la cabecera de mi documento.

$(document).ready(function() { $('#contact-form').validate({submitHandler: function(form) { $(form).ajaxSubmit(); contactSuccess() ; } }); }); 

La validación funciona. Sin embargo, el envío se realiza normalmente: en el envío, la página se vuelve a cargar. Por supuesto, tengo un comportamiento alternativo no js para los navegadores que no tienen js habilitado. Pero me gustaría que la experiencia de usuario más suave funcione.

El error que veo en firebug es: $ (form) .ajaxSubmit no es una función

¿Qué podría estar haciendo mal aquí?

Supongo que no tienes un complemento de formulario jquery incluido. ajaxSubmit no es una función ajaxSubmit núcleo, creo.

Algo como esto: http://jquery.malsup.com/form/

UPD

  

esta es una nueva función, así que tienes que agregar otro archivo lib después de jQuery lib

  

funcionará .. He probado … espero que funcione para usted ..

Ajax Envíe el formulario sin la actualización de la página utilizando el método jquery ajax primero incluya la biblioteca jquery.js y jquery-form.js y luego cree el formulario en html:

 
name: password: Email:

Tratar:

 $(document).ready(function() { $('#contact-form').validate({submitHandler: function(form) { var data = $('#contact-form').serialize(); $.post( 'url_request', {data: data}, function(response){ console.log(response); } ); } }); }); 

Pruebe la biblioteca ajaxsubmit . Realiza la sumisión ajax, así como la validación a través de ajax.

También la configuración es muy flexible para soportar cualquier tipo de interfaz de usuario.

Demostración en vivo disponible con ejemplos js, css y html.

Drupal 8

Drupal 8 no incluye las bibliotecas JS a las páginas automáticamente. Entonces, lo más probable es que si cumple con este error, debe adjuntar la biblioteca ‘core / jquery.form’ a su página (o formulario). Agrega algo como esto a tu matriz de render:

 $form['#attached']['library'][] = 'core/jquery.form'; 

Creo que quieres hacer $ (this) .ajaxSubmit (); … también, tome nota de lo que dice el ejemplo de la documentación de la función :

 // attach handler to form's submit event $('#myFormId').submit(function() { // submit the form $(this).ajaxSubmit(); // return false to prevent normal browser submit and page navigation return false; }); 

– es decir, dice que necesitas devolver falso; para evitar el envío normal del navegador.

 $(form).ajaxSubmit(); 

activa otra validación resultante de una recursividad. intenta cambiarlo a

 form.ajaxSubmit();