Maneje el evento de publicación de formulario a través de jquery para un formulario validado (validación discreta)

Tengo que manejar el evento de envío de un formulario y posiblemente bloquear la publicación. ex:

$('#myForm').submit(function (){
  if (someCondition)
    return true //post;
  else
    return false //dont post
});

Esa parte funciona, pero ahora tengo el complemento jquery.validate con jquery.validate.unobtrusive.

Quiero que esta parte del código se ejecute después de se pasa la validación (y solo si el formulario es válido).

¿Alguna idea?

Algunas aclaraciones

El complemento de validación es el complemento jquery.validate de bajista Yo uso Microsofts ' discreto (que se envía junto con MVC3) plugin en la parte superior. Creo que esta en el validationInfo función en jquery.validate.unobtrusive.js que el trabajo debe hacerse ...

preguntado el 08 de noviembre de 11 a las 14:11

No me dispare si me equivoco, pero ¿no tiene que enviar su formulario antes de poder validarlo? EDITAR: ¿Intentó apilar sus funciones entre sí? -

Cuando el usuario hace clic en enviar, el complemento de validación hace su trabajo y posiblemente impida el envío si el formulario no es válido. Básicamente, un deseo de hacer negocios cuando el formulario es válido, antes de que se publique. -

3 Respuestas

Prueba esto:

$("#myform").validate({
    submitHandler: function(form) {
        if (someCondition)
            return true; //post
        else
            return false; //dont post
        }
    }
});

respondido 08 nov., 11:18

Creo que es un buen comienzo, pero jquery.validate.unobtrusive está llamando .validate en forma. Estoy comprobando si puedo dar el controlador de envío al complemento discreto. - Johnny5

Ah, disculpas, leí mal tu OP y pensé que estabas usando el complemento de validación de Bassistance. - Rory McCrossan

Sí, este es el complemento de validación de Bassistance, con jquery.validate.unobstrive encima. El complemento discreto se envía con MVC de Microsoft. Aclararé mi pregunta. - Johnny5

No estoy seguro de haber entendido correctamente su pregunta, pero eche un vistazo a la submitHandler opción en el complemento jQueryValidate:

Devolución de llamada para manejar el envío real cuando el formulario es válido. Obtiene el formulario como único argumento. Reemplaza el envío predeterminado.

http://docs.jquery.com/Plugins/Validation/validate

respondido 08 nov., 11:18

Gracias a @Rory, logré lo que quería. Dado que jquery.validator.unobtrusive maneja la llamada a jquery.validate y no proporciona una forma de interceptar nada (sí, ese es un complemento de Microsoft ...), la solución es usar el submitHandler opción como sugirió Rory, pero a través de la setDefault método:

   if (typeof ($.validator) != 'undefined') {
      $.validator.setDefaults({
         submitHandler: function (form) {
            if (someCondition)
               return true; //post
            else
               return false; //dont post
         }

      });
   }

respondido 08 nov., 11:19

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.