我正在使用 bootstrap 选项卡,并且我使用 shown 事件来检测选项卡更改,在我想取消显示的情况下,即使我使用了 preventDefault() 函数,如下所示:

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
    var target = $(e.target).attr("href") // activated tab
    if(target === '#mise-en-page' || target === '#widgets'){
        if($('.page-name-input').length > 0){
            var nonEmpty = $('.page-name-input').filter(function(){
                return this.value != '';
            });
            if(nonEmpty.length==0){
                e.preventDefault();
                console.log('Error !!');
            }else{
                console.log('OK');
            }
        }else{
            console.log('OK');
        }
    };
  });
在这种情况下,preventDefault() 函数不起作用,即使控制台上打印了 'Error !!' 消息,我仍然可以在选项卡之间导航。
我该如何解决这个问题?
编辑 :
这是一个 jsfiddle,其中 preventDefault() 不适用于显示的事件。
http://jsfiddle.net/xFW8t/2426/

最佳答案

这是因为 fiddle 没有正确包含 bootstrap.js
当包含 js 时,e.preventDefault 工作正常..

http://www.codeply.com/go/FiyO9EGNC0(css、js 和 jquery 都包含在 Codeply 中)

由于数据属性,选项卡在没有 js 的情况下仍然可以工作,但是在没有 bootstrap.js 的情况下事件将无法工作

Updated fiddle

关于javascript - 取消引导标签的显示事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42224524/

10-11 14:13
查看更多