使用ajax / jquery的多个表单?

时间:2009-08-24 13:22:39

标签: jquery ajax forms

我正在使用此插件:http://malsup.com/jquery/form/#getting-started

我遇到问题,让它同时在页面上提交(使用单个函数)多个表单,并使其更复杂,我通过远程html调用的ajax加载表单。因此需要再次加载表单函数。

问题是如何使用(如果可能)可以同时提交多个表单的可重用函数。

4 个答案:

答案 0 :(得分:2)

可能您可以使用LiveQuery插件来解决该问题。它可以像例如

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

因此,带有.formButton类的按钮可以包含在服务器响应中,并且使用livequery也可以处理它。 希望能帮助到你。 抱歉我的英文。

答案 1 :(得分:0)

jQuery插件为您指定的表单的onsubmit事件添加一个事件侦听器。因此,为了同时提交多个表单,您需要一个调用每个表单的提交事件的函数。像这样:

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

下一个技巧是在任何一个表单提交时调用此函数。我会做这样的事情:

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

我没有测试过这段代码,但它应该给你一般的想法。

答案 2 :(得分:0)

您不能一次提交多个表格。但你可以按顺序提交它们

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

 }
return false;
});}

并添加侦听器:

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

如果您没有,则返回false非常重要,然后提交的第一个表单将提交两次

答案 3 :(得分:0)

我可能会这样:

// 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
}