несколько форм с AJAX / JQuery? - PullRequest
       13

несколько форм с AJAX / JQuery?

0 голосов
/ 24 августа 2009

Я использую этот плагин: http://malsup.com/jquery/form/#getting-started

У меня возникли проблемы, я могу отправить (используя одну функцию) более одной формы на страницу одновременно, и, чтобы сделать ее более сложной, я загружаю форму через ajax из удаленного вызова html. Таким образом, функция формы должна быть загружена снова.

Вопрос в том, как использовать (если возможно) функцию многократного использования, которая может отправлять несколько форм одновременно.

Ответы [ 4 ]

2 голосов
/ 24 августа 2009

Может быть, вы можете использовать LiveQuery Плагин для этой проблемы. Это может работать как например

<button ... rel="formId"/>
jQuery(".formButton").livequery("click",function() {
  var formId=jQuery(this).attr("rel");
  jQuery("#"+formId).ajaxSubmit();
}

Таким образом, кнопка с классом .formButton может быть включена в ответ сервера, а с помощью livequery она также обрабатывается. Надеюсь, поможет. Извините за мой английский.

0 голосов
/ 24 августа 2009

Вы не можете отправить несколько форм одновременно. Но вы можете отправить их последовательно

function submitFn() {
$('form').each(function() {
$.post(url, data, function() {
... 

 }
return false;
});}

и добавьте слушателей:

$('form').bind('submit', submitFn);

Возвращаемое значение false важно, потому что если у вас его нет, то первая отправленная форма будет отправлена ​​дважды

0 голосов
/ 24 августа 2009

Id, вероятно, пойти на что-то вроде этого:

// after you import the html
$("#form1, #form2").bind("submit", submit);
// or simply
$("form").bind("submit", submit);

function submit() {
  /// a $.post implementation selecting all the controls and passing them as data
  return false; // to prevent an actual browser submit
}
0 голосов
/ 24 августа 2009

Плагин jQuery добавляет прослушиватель событий к событию onsubmit указанной вами формы. Поэтому для одновременной отправки нескольких форм вам понадобится функция, которая вызывает события отправки каждой формы. Примерно так:

function doubleSubmit(e) {
 if (e.target.id == 'form2') {
   $('#form1').submit();
  } else {
   $('#form2').submit();
  }
}

Следующий трюк заключается в том, чтобы эта функция вызывалась при отправке любой из форм. Я бы сделал что-то вроде этого:

$("#form1").bind("submit", doubleSubmit);
$("#form2").bind("submit", doubleSubmit);

Я не тестировал этот код, но он должен дать вам общее представление.

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