2013-12-17 2 views
0

У меня проблема.вкладки, представляющие форму в новом окне, почему?

Я использовал Tabs (виджет 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

Я не полностью уверен в этом ответе, но если не решение, то, возможно, это даст вам идеи, которые могли бы привести к решению.

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

Это может вызвать тип проблемы, которую вы описываете.

Решение: вместо изменения идентификатора вкладки реорганизуйте свой код, чтобы использовать классы, которые вы добавляете/удаляете.

Как правило, пользуйтесь большой осторожностью при смене идентификаторов на лету.

+0

Я создаю динамические вкладки. вот почему я так делаю. Это не всегда происходит. иногда одна и та же форма работает отлично, но иногда открывается в окне. –

+0

Вы заметили, есть ли какая-либо корреляция между (1), когда вкладка была динамически создана, и (2) когда данные записываются за пределами tabdiv? – gibberish

+0

Нет, еще нет. Иногда встречаются во второй вкладке, иногда встречаются на третьей вкладке, но не всегда. –

Смежные вопросы