如何在表单提交上重新加载jquery选项卡?

时间:2009-07-26 15:39:29

标签: jquery ajax tabs

我将jquery用于ajax标签,而不是jquery UI,这对我来说很大 下面的代码是我的ajax选项卡,它使用外部文件加载选定的选项卡

我也有一个for使用ajax将数据发布到此页面HOMEfriendstatus.inc.php,这是#tab2

我提交表单时想知道的是什么,无论用户在屏幕上加载了什么标签,我都可以重新加载或更改为#tab2以显示#tab2的更新内容吗?

<script type="text/javascript">
var pageUrl = new Array();          
pageUrl[1] = "HOMEbulletin.inc.php";
pageUrl[2] = "HOMEfriendstatus.inc.php";
pageUrl[3] = "HOMEbulletin.inc.php";



function loadTab(id){
    if (pageUrl[id].length > 0){
        $("#loading").show();
        $.ajax({url: pageUrl[id], cache: false, success: function(message) {                            
            $("#tabcontent").empty().append(message);
            $("#loading").hide();             
        }
    });                 
}
}

$(document).ready(function(){
    /*$("#tab1").addClass('selected');*/
    $("#loading").hide();
    $("#tab1").click(function(){
        loadTab(1);
        $('div.HOMEtabdiv ul.HOMEtabs a').removeClass('selected');
        $(this).addClass('selected');
    });

    $("#tab2").click(function(){
        loadTab(2);
        $('div.HOMEtabdiv ul.HOMEtabs a').removeClass('selected');
        $(this).addClass('selected');
    });

    $("#tab3").click(function(){
        loadTab(3);
        $('div.HOMEtabdiv ul.HOMEtabs a').removeClass('selected');
        $(this).addClass('selected');
    });
    });
</script>

1 个答案:

答案 0 :(得分:1)

您是否尝试在成功回调表单中运行loadTab(2)?这应该足够了。

您还没有向我们展示您通过AJAX发送表单的代码,但我想类似的内容应该有效:

$.post('http://example.com/ajax/form', $('form').serialize(), 
    function (data, textStatus) {
        loadTab(2);
        $('div.HOMEtabdiv ul.HOMEtabs a').removeClass('selected');
        $('#tab2').addClass('selected');
    }
);

请注意,这会复制$("#tab2").click()函数的代码,因此在这种情况下您应该考虑使用命名函数而不是匿名函数,并在ajax回调中重用它:

function loadSecondTab() {
    loadTab(2);
    $('div.HOMEtabdiv ul.HOMEtabs a').removeClass('selected');
    $('#tab2').addClass('selected');
}

$('#tab2').click(loadSecondTab);
$.post('http://example.com/ajax/form', $('form').serialize(), loadSecondTab);

PS。 jQuery UI不是太大。您不必使用所有位。您可以轻松加载标签模块。