【问题标题】:How should I store the current position of tabs during a postback?在回发期间我应该如何存储标签的当前位置?
【发布时间】:2014-01-15 13:50:41
【问题描述】:

我正在使用 ctl0 存储选项卡的当前位置。这是存储当前选项卡值的正确方法吗?我读了一些使用客户端 id bcz 的地方,它在运行时会不匹配。我如何获得客户 ID。我正在使用隐藏字段进行存储。我做错了什么 这是我的 HTML

<ul class='tabs'>
    <li><a href='#tab1'>Tab 1</a></li>
    <li><a href='#tab2'>Tab 2</a></li>
    <li><a href='#tab3'>Tab 3</a></li>
  </ul>
  <div id='tab1'>
    <p>Hi, this is the first tab.</p>
  </div>
  <div id='tab2'>
    <p>This is the 2nd tab.</p>
  </div>
  <div id='tab3'>
    <p>And this is the 3rd tab.</p>
  </div>

脚本

$(document).ready(function () {

        $('ul.tabs').each(function () {
            // For each set of tabs, we want to keep track of
            // which tab is active and it's associated content
            var $active, $content, $links = $(this).find('a');


            // If the location.hash matches one of the links, use that as the active tab.
            // If no match is found, use the first link as the initial active tab.
            if ($('#_ctl0_hdnCurrentTabSelection').val() == "") {
                $('#_ctl0_hdnCurrentTabSelection').val(location.hash)
            }

            $active = $($links.filter('[href="' + $('#_ctl0_hdnCurrentTabSelection').val() + '"]')[0] || $links[0]);
            $active.addClass('active');
            $content = $($active.attr('href'));

            window.location.href = window.location.href.toString() + $active.attr('href');


            // Hide the remaining content
            $links.not($active).each(function () {
                $($(this).attr('href')).hide();
            });


            // Bind the click event handler
            $(this).on('click', 'a', function (e) {

                // Make the old tab inactive.
                $active.removeClass('active');
                //window.location.href = window.location.href.toString().replace($active.attr('href'), '');
                $content.hide();

                // Update the variables with the new link and content
                $active = $(this);
                $('#_ctl0_hdnCurrentTabSelection').val($active.attr("href"))
                $content = $($(this).attr('href'));

                window.location.href = window.location.href.toString().split('#')[0] + $active.attr('href');

                // Make the tab active.
                $active.addClass('active');
                $content.show();



                // Prevent the anchor's default click action
                e.preventDefault();
            });
        });

vb代码

 hdnCurrentTabSelection.Value = Request.Form(hdnCurrentTabSelection.UniqueID)

*aspx代码

 <input type="hidden" ID="hdnCurrentTabSelection"  runat="server" />

【问题讨论】:

    标签: javascript jquery asp.net vb.net


    【解决方案1】:

    不确定是否有任何容器内的 hiddencontrol。为了安全起见,您可以在 jquery 中这样做: 而不是这个:

    $('#_ctl0_hdnCurrentTabSelection').val()
    

    使用这个:

    $('#<%= hdnCurrentTabSelection.ClientID %>').val()
    

    另外,这行代码与你正在做的不匹配,我建议注释掉它

    hdnCurrentTabSelection.Value = Request.Form(hdnCurrentTabSelection.UniqueID)
    

    您在 jquery 的许多地方都缺少;您需要修复它们才能工作。

    【讨论】:

      猜你喜欢
      • 2014-01-14
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 2019-01-22
      • 2012-08-30
      • 2020-02-21
      相关资源
      最近更新 更多