Обрабатывать событие публикации формы через jquery для проверенной формы (ненавязчивая проверка)

Мне нужно обработать событие отправки формы и, возможно, заблокировать сообщение. бывший:

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

Эта часть работает, но теперь у меня есть плагин jquery.validate с jquery.validate.unobtrusive.

Я хочу, чтобы эта часть кода запускалась после проверки (и только если форма действительна).

Любые идеи?

Некоторые уточнения

Подключаемый модуль проверки — это подключаемый модуль jquery.validate из bassistance. Я использую Microsoft's < плагин href="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.js" rel="nofollow">ненавязчивый (который поставляется вместе с MVC3) сверху этого. Я думаю, что в функции validationInfo в jquery.validate.unobtrusive.js работа должна быть выполнена...


person Johnny5    schedule 08.11.2011    source источник
comment
Не стреляйте в меня, если я ошибаюсь, но разве вам не нужно отправлять форму, прежде чем вы сможете ее проверить? РЕДАКТИРОВАТЬ: Пробовали складывать ваши функции друг в друга?   -  person OptimusCrime    schedule 08.11.2011
comment
Когда пользователь нажимает «Отправить», плагин проверки выполняет свою работу и, возможно, предотвращает отправку, если форма недействительна. По сути, вы хотите заняться бизнесом, когда форма действительна, прежде чем она будет опубликована.   -  person Johnny5    schedule 08.11.2011


Ответы (3)


Попробуй это:

$("#myform").validate({
    submitHandler: function(form) {
        if (someCondition)
            return true; //post
        else
            return false; //dont post
        }
    }
});
person Rory McCrossan    schedule 08.11.2011
comment
Я думаю, что это хорошее начало, но есть jquery.validate.unobtrusive, который вызывает .validate в форме. Я проверяю, могу ли я передать обработчик отправки ненавязчивому плагину. - person Johnny5; 08.11.2011
comment
Ах, извините, я неправильно прочитал ваш OP и подумал, что вы используете плагин проверки Bassistance. - person Rory McCrossan; 08.11.2011
comment
Да, это плагин проверки Bassistance с jquery.validate.unobstrive поверх него. Ненавязчивый плагин поставляется с Microsoft MVC. Я уточню свой вопрос. - person Johnny5; 08.11.2011

Я не уверен, правильно ли я понял ваш вопрос, но взгляните на опцию submitHandler в плагине jQueryValidate:

Обратный вызов для обработки фактического отправки, когда форма действительна. Получает форму в качестве единственного аргумента. Заменяет отправку по умолчанию.

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

person Björn    schedule 08.11.2011

Благодаря @Rory я добился того, чего хотел. Поскольку jquery.validator.unobtrusive обрабатывает вызов jquery.validate и не дает возможности что-либо перехватить (да, это плагин Microsoft...), решение состоит в том, чтобы использовать параметр submitHandler, как предложил Рори, но через setDefault метод:

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

      });
   }
person Johnny5    schedule 08.11.2011