Tester: http://www.fmvi.vn/h159-bbcode
Cấu trúc BBcode:
- Code:
[tab width=XY]{ITEM}[/tab]
- Code:
width=XY
{ITEM} tương ứng với [item={TEXT1}]{TEXT2}[/item], khi muốn thêm tab mới chỉ cần thêm cấu trong này trong thẻ [tab]
{TEXT1}: Phần này là tên tab.
{TEXT2}: Phần này là nội dung tab.
Mã xử lý BBcode:
- Code:
str.replace(/\[item\=(.*?)\]((\n|.)*?)\[\/item\]/gi, "[*][b]$1[/b]$2").replace(/\[tab(\swidth\=((\d{0,3}(px|em|%|pt)?)|auto)?)?\]((\n|.)*?)\[\/tab\]/gi, "[table class=fmvitab$1][tr][td][list]$5[/list][/td][/tr][/table]")
- Code:
[table class=fmvitab width=500px][tr][td][list][*][b]{TEXT1}[/b]{TEXT2}[/list][/td][/tr][/table]
- Code:
/* CSS BBcode tab */
.fmvitab{display:none;margin:0 auto}
.fmvitab td > strong{cursor:pointer;display:inline-block;padding:5px 10px}
.fmvitab td > strong.active{background-color:#6F6E6E;color:#FFF;cursor:default}
.fmvitab ul{border:1px solid #DDD;list-style:none outside none;width:100%;margin:0!important;padding:10px}
.fmvitab li{display:none}
.fmvitab li.active{display:block}
- Code:
$(function () {
$(".fmvitab").each(function () {
var $fmvitab = $(this);
$fmvitab.find("li > strong").prependTo($fmvitab.find("td"));
$fmvitab.show().find("li:first, td>strong:first").addClass("active");
$fmvitab.find("td>strong").click(function () {
var n = $fmvitab.find("td>strong").index(this);
$fmvitab.find("li, td>strong").removeClass("active");
$fmvitab.find("li:eq(" + n + "), td>strong:eq(" + n + ")").addClass("active");
});
});
});
Xem và cho ý kiến nha, nhất là cái mã xử lý BBcode, mình chưa rành dùng Regex lắm.
Hiện đang sử dụng ở chức năng trả lời nhanh.
Có thể dùng nhiều tab trong một bài viết, nhưng không thể lồng tab vào trong tab. Khả năng có hạn, mình không xử lý được trường hợp này.