2012-08-09 29 views
13

Tôi có đoạn mã sau: http://jsfiddle.net/h6rQ2/2/Làm thế nào để tạo ra một nút "bên cạnh" mà chuyển sang tab sử dụng Java Script và Twitter Bootstrap

Tôi đang sử dụng html để tạo ra một hình thức cơ bản. Biểu mẫu này có hai phần - mỗi phần được chứa trong một tab (các tab được tạo bằng Twitter Bootstrap).

Làm cách nào để tạo nút "tiếp theo" chuyển từ tab đầu tiên sang tab thứ hai? Khi tôi thử làm ngay bây giờ, nó chỉ gửi biểu mẫu. Twitter Bootstrap đã cung cấp một chức năng cho phép bạn chuyển đổi các tab thông qua một nút bên ngoài? Nếu vậy, làm thế nào để bạn sử dụng nó?

+0

bạn đã làm gì cố gắng? [This] (http://twitter.github.com/bootstrap/javascript.html#tabs) cho bạn biết cách chọn một tab cụ thể bằng cách sử dụng JS. Bây giờ bạn chỉ cần tìm ra cách để có được anh chị em tiếp theo của phần tử hiện tại. – sachleen

+0

Tôi đã tạo một nút gọi hàm sau: $ (hàm next() {$ ('# tab_bar a: last'). Tab ('show');}). Tôi nhận được hai vấn đề mặc dù: (1) Khi tôi lần đầu tiên tải trang, tab thứ hai đã hoạt động trong khi tôi muốn tab đầu tiên được kích hoạt (2) Khi tôi nhấn nút, nó sẽ gửi biểu mẫu trước khi chuyển sang tab thứ hai . Tôi mới ở đây vì vậy tôi chắc chắn rằng tôi đang bỏ qua một cái gì đó quan trọng – goelv

+0

Tôi đã có một cảm giác các chức năng được đưa ra với Twitter Bootstrap có thể được sử dụng để thực hiện những gì tôi cần. Nhưng tôi không chắc chắn làm thế nào để sử dụng chúng chính xác – goelv

Trả lời

28

Với những nút:

<div class="btn-group"> 
    <button class="btn" id="prevtab" type="button">Prev</button> 
    <button class="btn" id="nexttab" type="button">Next</button> 
</div> 

Bạn sẽ cần điều này JS:

var $tabs = $('.tabbable li'); 

$('#prevtab').on('click', function() { 
    $tabs.filter('.active').prev('li').find('a[data-toggle="tab"]').tab('show'); 
}); 

$('#nexttab').on('click', function() { 
    $tabs.filter('.active').next('li').find('a[data-toggle="tab"]').tab('show'); 
}); 

Working demo (jsfiddle)

+0

Có cách nào tôi nên thêm javascript không? Tôi đã sao chép mã javascript của bạn vào một tệp riêng biệt và gọi tệp đó trong phần đầu của html của tôi. Nó vẫn không hoạt động, và tôi đang ở cuối sợi dây. – goelv

+0

ok, sau một số thử nghiệm mở rộng, tôi chắc rằng tôi không tải đúng javascript của bạn. Đây là cách tôi đã thực hiện nó: với mã của bạn chỉ cần sao chép-dán vào tập tin "custom.js". Tôi có làm điều gì sai? – goelv

+1

@goelv Bạn cần * đợi * để sẵn sàng làm điều đó. Bản demo đang hoạt động vì jsfiddle thực hiện theo mặc định. Kiểm tra [doc này] (http://api.jquery.com/jQuery/#jQuery3), và đặt mã của tôi bên trong một hàm sẽ được gọi chỉ sau khi dom đã sẵn sàng. – Sherbrow

0

Để làm cho nó cyclic (tab cuối cùng đi vào đầu tiên, tab đầu tiên đi sẽ kéo dài), đây là mã của tôi:

function previousVin(){ 
    var previousElement = $('#myTab li').filter('.active').prev('li').find('a[data-toggle="tab"]'); 
    if(previousElement.html()===undefined){ 
     $('#myTab a:last').tab('show'); 
    }else{ 
     previousElement.tab('show'); 
    } 
} 
function nextVin(){ 
    var nextElement = $('#myTab li').filter('.active').next('li').find('a[data-toggle="tab"]'); 
    if(nextElement.html()===undefined){ 
     $('#myTab a:first').tab('show'); 
    }else{ 
     nextElement.tab('show'); 
    } 
} 
-1

Đối bootstrap 3

$('a[data-toggle^="tab"]').click(function(){ 
    var data = $(this).attr("href"); 
    $('a[data-toggle^="tab"]').parent("li").removeClass("active"); 
    $('li a[href^="'+data+'"]').parent("li").addClass("active"); 
    $('.tab-pane').removeClass("active"); 
    $(data).addClass("active"); 
}) 

Bạn có thể thêm các liên kết như thế này ở bất cứ đâu

<a href="#tabname2" data-toggle="tab">Next</a> 
<a href="#tabname1" data-toggle="tab">Previous</a> 
Các vấn đề liên quan