禁用引导选项卡单击

时间:2013-11-16 14:07:17

标签: jquery twitter-bootstrap

我正在使用bootsrap标签作为注册表单,  我使用下一个和上一个按钮的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>

9 个答案:

答案 0 :(得分:8)

我在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");;        
    })
}

如果您有多个标签页,请为要停用的所有项目设置class="disabled"data-toggle=""

答案 1 :(得分:6)

尝试此操作以禁用标签

$('#tab').attr('class', 'disabled');

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

答案 2 :(得分:4)

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

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

您只是截取点击事件然后杀死该事件。为了显示标签,我只使用$(tab.content).fadeIn();

答案 3 :(得分:1)

$(document).ready(function(){
    $("#tabs > li").click(function(){
        if($(this).hasClass("disabled"))
            return false;
    });
});

工作就足够了

答案 4 :(得分:0)

超级简单..

Add disabled class to tab li.

on show.bs.tab event attached to a[data-toggle='tab'] element 
check to see if its parent has the disabled class...

if so return false...

答案 5 :(得分:0)

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

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

Maker确保在您的bootsrtap js

之后添加此代码

答案 6 :(得分:0)

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

删除data-toggle = ..

通过javascript做conditionnaly 在标签中提供标签,ID document.getElementById(tabId)[0] .setAttribute(&#34; data-toggle&#34;,&#34;&#34;);

答案 7 :(得分:0)

我用过

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()函数执行导航。这是大多数人想要的。

类似

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

祝您编程愉快!

答案 8 :(得分:-2)

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

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');
});