Форма отправки вкладок в новом окне, почему?

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()
  • 3
    epascarello, я использую в системе jquery-1.5.1, так что я думаю, что это не моя проблема.
Показать ещё 4 комментария
Теги:
forms
jquery-ui-tabs

1 ответ

0

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

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

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

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

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

  • 0
    Я создаю динамические вкладки. Вот почему я так поступаю. Это не всегда то, что происходит. иногда та же самая форма работает отлично, но иногда открывается в окне.
  • 0
    Вы заметили, есть ли какая-либо корреляция между (1), когда вкладка была создана динамически, и (2), когда данные записываются вне tabdiv?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню