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

发布于 2024-07-29 16:36:08 字数 1403 浏览 2 评论 0原文

我使用 jquery 作为 ajax 选项卡,而不是对于我的需求来说太大的 jquery UI 下面的代码是我的ajax选项卡,它使用外部文件加载选定的选项卡

我还有一个使用ajax将数据发布到此页面的for 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>

I use jquery for ajax tabs, not jquery UI that is to large for my needs
This code below is my ajax tabs, it loads the selected tab with an external file

I also have a for that uses ajax to post data to this page HOMEfriendstatus.inc.php which is #tab2

What I want to know when I submit the form, regardless of what tab the user has loaded on the screen, can I make it reload or change to #tab2 to show the updated content of #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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风渺 2024-08-05 16:36:08

您是否尝试过在表单成功回调中运行 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 并不是太大。 您不必使用它的所有位。 您可以轻松加载选项卡模块。

Have you tried running loadTab(2) in the form success callback? This should be enough.

You haven't showed us your code for sending form via AJAX but I guess something similar to that should work:

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

Notice that this duplicates the code for $("#tab2").click() function so you should consider using named function instead of anonymous in that case and reusing it in ajax callback:

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 is not too large. You don't have to use all it bits. You can easily just load tabs module.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文