Для отправки формы с помощью ajax необходимо дважды нажать кнопку отправки (плагин проверки jquery) - PullRequest
0 голосов
/ 02 октября 2010

Форма проверяется перед отправкой с этим плагином.И отправлено, как показано в коде:

jQuery.validator.setDefaults({
   submitHandler: function(){ 
      jQuery("form").submit(function(e) {
          e.preventDefault();
          jQuery.post(base_url + "blog/ajax_comment", { author: jQuery("#author").val(), email: jQuery("#email").val(), url: jQuery("#url").val(), message: jQuery("#message").val() , post_ID: jQuery("#post_ID").val(), not: jQuery("#not").val() }, function (data) {
             //do stuff here
          });
      });
  }
});

jQuery().ready(function() {
   // validate the comment form when it is submitted
   jQuery("#commentform").validate();
});

Чтобы быть отправленным, мне нужно нажать кнопку отправки дважды .Я новичок в jQuery и не могу понять, почему это так.Есть ли простой способ исправить это?

1 Ответ

2 голосов
/ 02 октября 2010

submitHandler уже переопределяет событие по умолчанию, поэтому просто поместите туда код для отправки ajax:

jQuery.validator.setDefaults({
  submitHandler: function(){ 
    jQuery.post(base_url + "blog/ajax_comment", { author: jQuery("#author").val(), email: jQuery("#email").val(), url: jQuery("#url").val(), message: jQuery("#message").val() , post_ID: jQuery("#post_ID").val(), not: jQuery("#not").val() }, function (data) {
      //do stuff here
    });
  }
});

Если у ваших элементов есть name атрибуты, которые соответствуют их идентификаторам, просто используйте .serialize(), например:

jQuery.validator.setDefaults({
  submitHandler: function(form){ 
    jQuery.post(base_url + "blog/ajax_comment", jQuery(form).serialize(), function (data) {
      //do stuff here
    });
  }
});

Что происходит с вашим текущим кодом, так это то, что в обработчике submit он присоединяет a новый обработчик submit для next времени, а не на самом деле запуск вашего кода. Вместо этого просто запустите код прямо в обратном вызове submitHandler.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...