【问题标题】:Disable bootstrap tab clicks禁用引导选项卡点击
【发布时间】:2013-11-29 22:14:26
【问题描述】:

我正在使用引导选项卡作为注册表单, 我使用下一个和上一个按钮的 onclick 事件更改了选项卡的导航。 但是标签点击仍然有效并且能够轻松转到所需的页面请帮助我如何停止标签点击导航我只想要下一个上一个按钮导航 请在下面找到html代码

 <ul class="nav nav-tabs" id="myTab">
   <li class="active">
     <a href="#home" data-toggle="tab">1.PERSONAL DETAILS</a> 
   </li>   
   <li>
     <a href="#profile" data-toggle="tab"> 2. CONTACT DETAILS</a> 
   </li>  
   <li>
     <a href="#messages" data-toggle="tab">3. EDUCATION DETAILS</a>
   </li>   
   <li>
     <a href="#course" data-toggle="tab">4. SELECT COURSE</a>
   </li>   
   <li>
     <a href="#settings" data-toggle="tab">5. PAYMENT DETAILS</a>
   </li> 
 </ul>
 <div class="tab-content">
    <div class="tab-pane active" id="home">Form elements </div>
    <div id="profile">Form elements </div>
    <div id="messages">Form elements </div>
    <div id="settings">Form elements </div>
 </div>

【问题讨论】:

标签: jquery twitter-bootstrap


【解决方案1】:

我在 HTML 中有这样的标签(使用 Bootstrap 3.0):

<ul class="nav nav-tabs" id="createNotTab">
    <li class="active" ><a href="#home" data-toggle="tab">Step 1: Select Property</a></li>
    <li class="disabled"><a href="#createnotification" data-toggle="" >Step 2: Create Notification</a></li>
</ul>

下一个/上一个按钮

<button class="btn btn-warning prevtab" type="button" onclick="return showPrev()"><span class="glyphicon glyphicon-arrow-left"></span>Previous </button>
 <button class="btn btn-info prevtab" type="button" onclick="return showNext()"><span class="glyphicon glyphicon-arrow-right"></span>Next </button>

在我的 JavaScript 文件中:

 var $tabs = $('#createNotTab li');


function showPrev() {
    $tabs.filter('.active').prev('li').removeClass("disabled");
    $tabs.filter('.active').prev('li').find('a[data-toggle]').each(function () {
       $(this).attr("data-toggle", "tab");
    });

    $tabs.filter('.active').prev('li').find('a[data-toggle="tab"]').tab('show');

    $tabs.filter('.active').next('li').find('a[data-toggle="tab"]').each(function () {
        $(this).attr("data-toggle", "").parent('li').addClass("disabled");        
    })
}

function showNext() {
    $tabs.filter('.active').next('li').removeClass("disabled");
    $tabs.filter('.active').next('li').find('a[data-toggle]').each(function () {
        $(this).attr("data-toggle", "tab");
    });

    $tabs.filter('.active').next('li').find('a[data-toggle="tab"]').tab('show');

    $tabs.filter('.active').prev('li').find('a[data-toggle="tab"]').each(function () {
        $(this).attr("data-toggle", "").parent('li').addClass("disabled");;        
    })
}

如果您有多个选项卡,请为您要停用的所有 li 项目设置 class="disabled" 和 data-toggle=""。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,这就是我使用的。

    $("element").click(event) {
        event.stopImmediatePropagation();
    }
    

    您只需拦截点击事件,然后终止该事件。要显示标签,我只需使用 $(tab.content).fadeIn();

    【讨论】:

      【解决方案3】:

      试试这个禁用标签

      $('#tab').attr('class', 'disabled');
      
          $('tab').click(function(event){
              if ($(this).hasClass('disabled')) {
                  return false;
              }
          });
      

      【讨论】:

      • 即使它禁用,我也可以使用标签导航我想停止通过标签点击导航到下一个标签它只会通过点击下一个按钮发生
      • 试试@Delphian 建议
      • 是的,我试过了,然后下一个按钮也不起作用我的意思是删除 data-toggle="tab" 后,当您单击下一个按钮进入下一个选项卡时它不会起作用
      • 删除 data-toggle="tab" 并单击下一步按钮显示目标容器并隐藏其他容器。单击下一步,检查要导航的容器
      • 是的,我设法在 onclick 上写了一些 jquery,谢谢你的想法
      【解决方案4】:

      超级简单...

      将禁用类添加到标签 li。
      
      在附加到 [data-toggle='tab'] 元素的 show.bs.tab 事件上
      检查其父级是否具有禁用类...
      
      如果是这样返回假...
      

      【讨论】:

      • 我喜欢这种做法,很干净。它可以包含在整个应用程序的 js 文件中,因此只需将禁用的类添加到选项卡。
      【解决方案5】:
      $(document).ready(function(){
          $("#tabs > li").click(function(){
              if($(this).hasClass("disabled"))
                  return false;
          });
      });
      

      工作就够了

      【讨论】:

        【解决方案6】:

        使用以下代码禁用用户单击选项卡:

        $('li:has([data-toggle="tab"])').click(function(event){return false;});
        

        确保此代码将在您的 bootsrtap js 之后添加

        【讨论】:

          【解决方案7】:

          我,这个问题有一段时间了。

          去掉data-toggle = ..

          通过javascript做条件 给标签,标签中的ID document.getElementById(tabId)[0].setAttribute("data-toggle", "");

          【讨论】:

            【解决方案8】:

            我用过

            style="pointer-events: none;"
            

            类似:

            <div class="steps nav" role="tablist">
                <div href="#first" data-toggle="tab" role="tab" class="step mb-4 active" style="pointer-events: none;">
                    <div class="number">1</div>
                    first
                </div>
                <div href="#second" data-toggle="tab" role="tab" class="step mb-4" style="pointer-events: none;">
                    <div class="number">2</div>
                    second
                </div>
            </div>
            

            似乎在做这个伎俩。仍然能够使用 .click() 函数执行导航。这是大多数人都在寻找的。​​p>

            类似

            $('.nav [href="' + target + '"]').click()
            

            编码愉快!

            【讨论】:

              【解决方案9】:

              我尝试了所有建议的答案,但最后我让它像这样工作

              if (AnyCondition) //your condition
              {
                  $("a[data-toggle='tab'").prop('disabled', true);
                  $("a[data-toggle='tab'").each(function () {
                      $(this).prop('data-href', $(this).attr('href')); // hold you original href
                      $(this).attr('href', '#'); // clear href
                  });                
                  $("a[data-toggle='tab'").addClass('disabled-link');
              }
              else
              {
                  $("a[data-toggle='tab'").prop('disabled', false);
                  $("a[data-toggle='tab'").each(function () {
                      $(this).attr('href', $(this).prop('data-href')); // restore original href
                  });
                  $("a[data-toggle='tab'").removeClass('disabled-link');
              }
              // if you want to show extra messages that the tab is disabled for a reason
              $("a[data-toggle='tab'").click(function(){
                 alert('Tab is disabled for a reason');
              });
              

              【讨论】:

              • 尽管每个人都反对这个,但它实际上是最好的答案。它帮助我做到了: $("#id" ).css( "color", "grey" ).prop('disabled', true);
              • @sol 我不知道为什么投反对票,它对我有用 :)
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-02-07
              • 1970-01-01
              • 1970-01-01
              • 2018-08-11
              • 2021-03-19
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多