2011-04-23 168 views
0

嗨 我基本上是通過單獨的JQueryUI選項卡中的AJAX調用單個php頁面(及其表單)。該代碼是這樣的:使用JQuery UI選項卡多次加載Ajax內容

<div id="dock"> 
<ul> 
<li><a href="/buddylity_dev/index.php?r=welcome/home">Home</a></li> 
<li><a href="/buddylity_dev/index.php?r=welcome/profile">Profile</a></li> 
<li><a href="/buddylity_dev/index.php?r=welcome/statistics">Statistics</a></li> 
<li><a href="/buddylity_dev/index.php?r=ping/view">Pings</a></li> 
</ul> 
</div> 

... 

jQuery(function($) { 
jQuery('#dock').tabs({'collapsible':false}); 
}); 

1)現在每次我點擊標籤,其內容被載入罰款,但前面的內容不被摧毀。因此,想象一下如果一個標籤被點擊(加載)N次 - 表單也會被提交N次。據我所知,多個綁定發生在這裏,因此多個表單提交。我怎樣才能防止這一點?

2)我在每個選項卡中都有單獨的表單。當選擇多個選項卡時,會加載多個表單。現在,如果我通過任何一種形式提交一個值(通過AJAX),數據將在所有先前加載的表單中提交(使用Firebug進行檢查)。我該如何防止再次發生?

PS:在選項卡中啓用緩存部分解決了問題#1,但對問題#2沒有幫助。

PPS:我經歷了不少類似的帖子去了,但我仍然停留:(

感謝

回答

0

從代碼中有點點,它看起來像你的問題可能來自使用相同的出現!網頁(的index.php)對於每個選項卡中檢查這些:

  • 是否每個窗體有一個獨立的ID,他們應該
  • 在這兩個「高速緩存」和「ajaxOptions」禁用緩存這將使?。確保內容正在刷新d(並刪除),每次點擊。
  • 您的表單如何通過AJAX提交?無論採用哪種方法,都應該通過「加載」選項來處理每個選項卡的表單綁定。

嘗試......

$("#dock").tabs({ 
    load: function (event, ui) { 
     //setup new content bindings here 
    }, 
    cache: false, 
    ajaxOptions: { 
     cache: false 
    } 
}); 
+1

感謝保羅。我已經通過.live()方法修復了它:'$('body')。live('tabsselect',function(event){$('body')。undelegate('#search_button','click '); \t $('body')。undelegate('#update_button','click'); });'謝謝你的回答,那也可以。 – crozzfire 2011-04-25 06:54:00

+0

好的。你能接受嗎? – Paul 2011-04-25 12:14:42

+0

完成,對不起,花了這麼久:) – crozzfire 2011-05-25 09:22:35

相關問題