狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

Jquery-拖拉合并單元格

liguoquan
2023年10月25日 17:16 本文熱度 617
:Jquery-拖拉合并單元格

1.在文件底部加上以下代碼即可

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script>

<script>

    //需要的樣式

    document.write('<style>.cannotselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-khtml-user-select:none;user-select:none;}td.selected{background:#0094ff;color:#fff}</style>');

    //jQuery表格單元格合并插件,功能和excel單元格合并功能一樣,并且可以保留合并后的所有單元格內容到第一個單元格中

    $.fn.tableMergeCells = function () {

        //***請保留原作者相關信息

        //***power by showbo,http://www.w3dev.cn

        return this.each(function () {

            var tb = $(this), startTD, endTD, MMRC = { startRowIndex: -1, endRowIndex: -1, startCellIndex: -1, endCellIndex: -1 };

            //初始化所有單元格的行列下標內容并存儲到dom對象中

            tb.find('tr').each(function (r) { 

$('td', this).each(function (c) { 

$(this).data('rc', { r: r, c: c }); 

});

});

            //添加表格禁止選擇樣式和事件

            tb.addClass('cannotselect').bind('selectstart', function () { return false });

            //選中單元格處理函數

            function addselectedClass() {

                var selected = false,  rc,t;

                tb.find('td').each(function () {

                    rc = $(this).data('rc');

                    //判斷單元格左上坐標是否在鼠標按下和移動到的單元格行列區間內

                    selected = rc.r >= MMRC.startRowIndex && rc.r <= MMRC.endRowIndex && rc.c >= MMRC.startCellIndex && rc.c <= MMRC.endCellIndex;

                    if (!selected && rc.maxc) {//合并過的單元格,判斷另外3(左下,右上,右下)個角的行列是否在區域內             

                        selected =

                            (rc.maxr >= MMRC.startRowIndex && rc.maxr <= MMRC.endRowIndex && rc.c >= MMRC.startCellIndex && rc.c <= MMRC.endCellIndex) ||//左下

                            (rc.r >= MMRC.startRowIndex && rc.r <= MMRC.endRowIndex && rc.maxc >= MMRC.startCellIndex && rc.maxc <= MMRC.endCellIndex) ||//右上

                            (rc.maxr >= MMRC.startRowIndex && rc.maxr <= MMRC.endRowIndex && rc.maxc >= MMRC.startCellIndex && rc.maxc <= MMRC.endCellIndex);//右下

 

                    }

                    if (selected)  this.className = 'selected';

                });

                var rangeChange = false;

                tb.find('td.selected').each(function () { //從已選中單元格中更新行列的開始結束下標

                    rc = $(this).data('rc');

                    t = MMRC.startRowIndex;

                    MMRC.startRowIndex = Math.min(MMRC.startRowIndex, rc.r);

                    rangeChange = rangeChange || MMRC.startRowIndex != t;

 

                    t = MMRC.endRowIndex;

                    MMRC.endRowIndex = Math.max(MMRC.endRowIndex, rc.maxr || rc.r);

                    rangeChange = rangeChange || MMRC.endRowIndex != t;

 

                    t = MMRC.startCellIndex;

                    MMRC.startCellIndex = Math.min(MMRC.startCellIndex, rc.c);

                    rangeChange = rangeChange || MMRC.startCellIndex != t;

 

                    t = MMRC.endCellIndex;

                    MMRC.endCellIndex = Math.max(MMRC.endCellIndex, rc.maxc || rc.c);

                    rangeChange = rangeChange || MMRC.endCellIndex != t;

                });

                //注意這里如果用代碼選中過合并的單元格需要重新執行選中操作

                if (rangeChange) addselectedClass();

            }

            function onMousemove(e) {//鼠標在表格單元格內移動事件

                e = e || window.event;

                var o = e.srcElement || e.target;

                if (o.tagName == 'TD') {

                    endTD = o;

                    var sRC = $(startTD).data('rc'), eRC = $(endTD).data('rc'), rc;

                    MMRC.startRowIndex = Math.min(sRC.r, eRC.r);

                    MMRC.startCellIndex = Math.min(sRC.c, eRC.c);

                    MMRC.endRowIndex = Math.max(sRC.r, eRC.r);

                    MMRC.endCellIndex = Math.max(sRC.c, eRC.c);

                    tb.find('td').removeClass('selected');

                    addselectedClass();

                }

            }

            function onMouseup(e) {//鼠標彈起事件

                tb.unbind({ mouseup: onMouseup, mousemove: onMousemove });

                if (startTD && endTD && startTD != endTD && confirm('確認合并?!')) {//開始結束td不相同確認合并

                    var tds = tb.find('td.selected'), firstTD = tds.eq(0), index = -1, t, addBR

                        , html = tds.filter(':gt(0)').map(function () {

                            t = this.parentNode.rowIndex;

                            addBR = index != -1 && index != t;

                            index = t;

                            return (addBR ? '<br>' : '') + this.innerHTML

                        }).get().join(',');

                    tds.filter(':gt(0)').remove(); firstTD.append(',' + html.replace(/,(<br>)/g, '$1'));

 

                    //更新合并的第一個單元格的緩存rc數據為所跨列和行

                    var rc = firstTD.attr({ colspan: MMRC.endCellIndex - MMRC.startCellIndex + 1, rowspan: MMRC.endRowIndex - MMRC.startRowIndex + 1 }).data('rc');

                    rc.maxc = rc.c + MMRC.endCellIndex - MMRC.startCellIndex; rc.maxr = rc.r + MMRC.endRowIndex - MMRC.startRowIndex;

console.info(rc.maxc);

console.info(rc.maxr);

                    firstTD.data('rc', rc);

 

                }

                tb.find('td').removeClass('selected');

                startTD = endTD = null;

            }

            function onMousedown(e) {

                var o = e.target;

                if (o.tagName == 'TD') {

                    startTD = o;

                    tb.bind({ mouseup: onMouseup, mousemove: onMousemove });

                }

            }

            tb.mousedown(onMousedown);

        });

    };

 

    $('table').tableMergeCells();

</script>


該文章在 2023/10/25 17:16:46 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved