2010-03-31 126 views
1

有两种形式,每种形式都有自己的jQuery UI选项卡,如何在单击新选项卡时在取消选择的选项卡中发布表单?jQuery选项卡:打开新选项卡时发布先前选定的选项卡

当用户在选项卡之间导航时,我需要在服务器端维护状态。

我已经看着像

$('#tab-container-id').bind('tabsselect', function(event, ui) { 
    ... 
}); 

但还没有找到一种方式来获得的标签被隐藏,并张贴的表格内容。

设置此项的一种方法是将整个选项卡集合放在表单元素中,每选择一个选项卡时将提交一个表单元素,但我宁愿在每个选项卡内部都有一个表单,每个选项卡都有自己的操作绑定到不同的Spring MVC命令对象)。

感谢您的任何提示...

回答

0

感谢 - 这是去,以保持一个变量为当前打开的选项卡的方式,这是我做过什么:

jQuery(document).ready(function() { 

    var activePanel; 

    $('#tabs').bind('tabsload', function(event, ui) { 

     activePanel = $(ui.panel); // basically the answer :) 
    }); 

    $('#tabs').bind('tabsselect', function(event, ui) {  

     var formToSubmit = activePanel.find('form:first'); 

     // using http://docs.jquery.com/Plugins/Validation 
     var isValid = formToSubmit.valid(); 
     if(isValid) { 
      $.post(
       formToSubmit.attr('action'), 
       formToSubmit.serialize() 
      );  

      activePanel = $(ui.panel); 
     } 

     // another tab can't be opened unless the form in this one validates 
     return isValid; 
    }); 

}); 
2

你可以保持它知道当前打开的选项卡形式ID的变量。然后为每个选项卡提供一个单击事件以使用缓存的ID发布该表单。

2

我喜欢Jer的建议,以确定哪些表单需要发布。如果您仍然坚持如何发布表单,但我会查看jQuery()。searlize()方法,这里是http://api.jquery.com/serialize/,并将其与jQuery()。post()方法结合使用。

所以对于一些伪代码...

$('.tab').bind("click", function() { 
    var tabData = $(cachedFormElement).serialize(); 
    $.post('controllerUrl', tabData); 
}); 
相关问题