2013-12-17 87 views
0

我在這裏有一個問題。選項卡在新窗口提交表單,爲什麼?

我一直在使用Tabs(widget jqueryUi)。

所有似乎工作正常,但有時當我提交表單(在選項卡內),結果出現在窗口中,而不是在tabdiv。

我不想那樣,客戶端必須保持在網絡系統。

我已經試過在表格中放入target="_self",但有時候會一直這樣做。

var $tabs = $("#main").tabs({ 
    tabTemplate: "<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close notext inline'>Remove Tab</span></li>", 
    idPrefix: "tab_", 
    add:function(e, ui){ 
     $tabs.tabs('select', '#' + ui.panel.id).show("blind"); 
     $j("#list_tabs .ui-icon-close:last").on("click", function(e, elemento) { 
      var index = $("li", $("#main").tabs()).index($(this).parent()); 
      $("#main").tabs("remove", index); 

      desativarItemSubmenu($('#' + $(this).parent()[0].id.replace('tab_', ''))); 
     }); 
    }, 

    select: function(event, ui){ 
     var id = $(ui.tab).parent()[0].id; 
     if(id) 
      ativarItemSubmenu($('#' + id.replace('tab_', ''))); 
    }, 
    cache:true, 
    ajaxOptions: {async: false,cache: false} 
}) 


$(".anchor").live("click", function(){ 
    if("<?php echo $this->session->userdata("cod_usuario") ?>" == ""){ 
     window.location.reload; 
    } 
    var url = this.rel; 
    var tab_title = this.text; 
    var tab_id = "tab_"+this.id; 

    if(!$('#' + tab_id).length){ 
     if($('#main').tabs('length') > 3) 
      $("#main").tabs("remove", 3); 

     $("#main").tabs("add", url, tab_title); 
     $("#list_tabs li:last").attr("id", tab_id); 
     $("#list_tabs li:last").addClass("active"); 
    } 
    else{ 
     $('#main').tabs('option', 'selected', $('#' + tab_id).index()); 
    } 
}) 

// Remove a tab clicando no "x" (remove tab by click on "x") 
$("#main span.ui-icon-close").live("click", function() { 
    var index = $("li", $("#main").tabs()).index($(this).parent()); 
    $("#main").tabs("remove", index); 
}); 
+1

'live'在1.7中被棄用,並在jQuery 1.9中被刪除。停止使用它,並開始使用'on()' – epascarello

+3

epascarello,我在系統中使用jquery-1.5.1,所以我認爲這不是我的問題。 –

+0

啊,2011年發佈。我想你可能想升級。 ;) – epascarello

回答

0

我對這個答案並不完全有信心,但如果不是解決方案,那麼它可能會給你帶來解決方案的想法。

看起來您正在改變標籤的ID屬性。當您更改元素的ID時,將其從DOM中移除 - 或者,您將其作爲新元素重新注入到DOM中。因此,以前綁定到該元素的任何JavaScript都不再受到綁定。由於您使用的是jQuery UI選項卡,因此更改後的元素可能不再是選項卡。

這可能會導致您描述的問題類型。

解決方案:不是更改選項卡ID,而是重構代碼以使用您添加/刪除的類。

作爲一般規則,在運行中更改ID時要格外小心。

+0

我正在創建動態選項卡。這就是我這樣做的原因。這並不總是會發生什麼。有時候相同的表單完美地工作,但有時會在窗口中打開。 –

+0

您是否注意到(1)動態創建標籤時和(2)數據寫入tabdiv之外時是否存在任何關聯? – gibberish

+0

不,還沒有。有時出現在第二個選項卡中,有時出現在第三個選項卡中,但沒有。 –

相關問題