From b7300ea55866aeeb5f169b6dc5bfb5704fbfa039 Mon Sep 17 00:00:00 2001 From: Karson <karsonzhang@163.com> Date: Thu, 21 Dec 2017 23:04:02 +0800 Subject: [PATCH] 修复表格在多个列头时buttons的事件可能不响应的BUG 移除表格按钮columnIndex,增加fieldIndex属性 --- public/assets/js/backend.js | 50 +++++++++++++++++++++++++++++++++++++++----------- public/assets/js/require-backend.min.js | 57 ++++++++++++++++++++++++++++++++++++++++++--------------- public/assets/js/require-table.js | 7 +++---- 3 files changed, 84 insertions(+), 30 deletions(-) diff --git a/public/assets/js/backend.js b/public/assets/js/backend.js index 8aca0a5..0d4bca8 100755 --- a/public/assets/js/backend.js +++ b/public/assets/js/backend.js @@ -113,12 +113,26 @@ define(['fast', 'moment'], function (Fast, Moment) { $(document).on('click', '.btn-dialog,.dialogit', function (e) { var that = this; var options = $.extend({}, $(that).data() || {}); - if (typeof options.tableId !== 'undefined' && typeof options.columnIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') { + if (typeof options.tableId !== 'undefined' && typeof options.fieldIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') { var tableOptions = $("#" + options.tableId).bootstrapTable('getOptions'); if (tableOptions) { - var button = tableOptions.columns[0][options.columnIndex]['buttons'][options.buttonIndex]; - if (button && typeof button.callback === 'function') { - options.callback = button.callback; + var columnObj = null; + $.each(tableOptions.columns, function (i, columns) { + $.each(columns, function (j, column) { + if (typeof column.fieldIndex !== 'undefined' && column.fieldIndex === options.fieldIndex) { + columnObj = column; + return false; + } + }); + if (columnObj) { + return false; + } + }); + if (columnObj) { + var button = columnObj['buttons'][options.buttonIndex]; + if (button && typeof button.callback === 'function') { + options.callback = button.callback; + } } } } @@ -159,15 +173,29 @@ define(['fast', 'moment'], function (Fast, Moment) { var error = typeof options.error === 'function' ? options.error : null; delete options.success; delete options.error; - if (typeof options.tableId !== 'undefined' && typeof options.columnIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') { + if (typeof options.tableId !== 'undefined' && typeof options.fieldIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') { var tableOptions = $("#" + options.tableId).bootstrapTable('getOptions'); if (tableOptions) { - var button = tableOptions.columns[0][options.columnIndex]['buttons'][options.buttonIndex]; - if (button && typeof button.success === 'function') { - success = button.success; - } - if (button && typeof button.error === 'function') { - error = button.error; + var columnObj = null; + $.each(tableOptions.columns, function (i, columns) { + $.each(columns, function (j, column) { + if (typeof column.fieldIndex !== 'undefined' && column.fieldIndex === options.fieldIndex) { + columnObj = column; + return false; + } + }); + if (columnObj) { + return false; + } + }); + if (columnObj) { + var button = columnObj['buttons'][options.buttonIndex]; + if (button && typeof button.success === 'function') { + success = button.success; + } + if (button && typeof button.error === 'function') { + error = button.error; + } } } } diff --git a/public/assets/js/require-backend.min.js b/public/assets/js/require-backend.min.js index 00e46a1..8679e87 100644 --- a/public/assets/js/require-backend.min.js +++ b/public/assets/js/require-backend.min.js @@ -6911,12 +6911,26 @@ define('backend',['fast', 'moment'], function (Fast, Moment) { $(document).on('click', '.btn-dialog,.dialogit', function (e) { var that = this; var options = $.extend({}, $(that).data() || {}); - if (typeof options.tableId !== 'undefined' && typeof options.columnIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') { + if (typeof options.tableId !== 'undefined' && typeof options.fieldIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') { var tableOptions = $("#" + options.tableId).bootstrapTable('getOptions'); if (tableOptions) { - var button = tableOptions.columns[0][options.columnIndex]['buttons'][options.buttonIndex]; - if (button && typeof button.callback === 'function') { - options.callback = button.callback; + var columnObj = null; + $.each(tableOptions.columns, function (i, columns) { + $.each(columns, function (j, column) { + if (typeof column.fieldIndex !== 'undefined' && column.fieldIndex === options.fieldIndex) { + columnObj = column; + return false; + } + }); + if (columnObj) { + return false; + } + }); + if (columnObj) { + var button = columnObj['buttons'][options.buttonIndex]; + if (button && typeof button.callback === 'function') { + options.callback = button.callback; + } } } } @@ -6957,15 +6971,29 @@ define('backend',['fast', 'moment'], function (Fast, Moment) { var error = typeof options.error === 'function' ? options.error : null; delete options.success; delete options.error; - if (typeof options.tableId !== 'undefined' && typeof options.columnIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') { + if (typeof options.tableId !== 'undefined' && typeof options.fieldIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') { var tableOptions = $("#" + options.tableId).bootstrapTable('getOptions'); if (tableOptions) { - var button = tableOptions.columns[0][options.columnIndex]['buttons'][options.buttonIndex]; - if (button && typeof button.success === 'function') { - success = button.success; - } - if (button && typeof button.error === 'function') { - error = button.error; + var columnObj = null; + $.each(tableOptions.columns, function (i, columns) { + $.each(columns, function (j, column) { + if (typeof column.fieldIndex !== 'undefined' && column.fieldIndex === options.fieldIndex) { + columnObj = column; + return false; + } + }); + if (columnObj) { + return false; + } + }); + if (columnObj) { + var button = columnObj['buttons'][options.buttonIndex]; + if (button && typeof button.success === 'function') { + success = button.success; + } + if (button && typeof button.error === 'function') { + error = button.error; + } } } } @@ -10005,9 +10033,8 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr var options = table ? table.bootstrapTable('getOptions') : {}; var html = []; var url, classname, icon, text, title, extend; - var columnIndex = options.columns[0].findIndex(function (element) { - return element === column; - }); + var fieldIndex = column.fieldIndex; + $.each(buttons, function (i, j) { if (type === 'operate') { if (j.name === 'dragsort' && typeof row[Table.config.dragsortfield] === 'undefined') { @@ -10028,7 +10055,7 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr refresh = j.refresh ? 'data-refresh="' + j.refresh + '"' : ''; confirm = j.confirm ? 'data-confirm="' + j.confirm + '"' : ''; extend = j.extend ? j.extend : ''; - html.push('<a href="' + url + '" class="' + classname + '" ' + (confirm ? confirm + ' ' : '') + (refresh ? refresh + ' ' : '') + extend + ' title="' + title + '" data-table-id="' + (table ? table.attr("id") : '') + '" data-column-index="' + columnIndex + '" data-row-index="' + index + '" data-button-index="' + i + '"><i class="' + icon + '"></i>' + (text ? ' ' + text : '') + '</a>'); + html.push('<a href="' + url + '" class="' + classname + '" ' + (confirm ? confirm + ' ' : '') + (refresh ? refresh + ' ' : '') + extend + ' title="' + title + '" data-table-id="' + (table ? table.attr("id") : '') + '" data-field-index="' + fieldIndex + '" data-row-index="' + index + '" data-button-index="' + i + '"><i class="' + icon + '"></i>' + (text ? ' ' + text : '') + '</a>'); } }); return html.join(' '); diff --git a/public/assets/js/require-table.js b/public/assets/js/require-table.js index eebbf0c..5b5b23b 100644 --- a/public/assets/js/require-table.js +++ b/public/assets/js/require-table.js @@ -432,9 +432,8 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table var options = table ? table.bootstrapTable('getOptions') : {}; var html = []; var url, classname, icon, text, title, extend; - var columnIndex = options.columns[0].findIndex(function (element) { - return element === column; - }); + var fieldIndex = column.fieldIndex; + $.each(buttons, function (i, j) { if (type === 'operate') { if (j.name === 'dragsort' && typeof row[Table.config.dragsortfield] === 'undefined') { @@ -455,7 +454,7 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table refresh = j.refresh ? 'data-refresh="' + j.refresh + '"' : ''; confirm = j.confirm ? 'data-confirm="' + j.confirm + '"' : ''; extend = j.extend ? j.extend : ''; - html.push('<a href="' + url + '" class="' + classname + '" ' + (confirm ? confirm + ' ' : '') + (refresh ? refresh + ' ' : '') + extend + ' title="' + title + '" data-table-id="' + (table ? table.attr("id") : '') + '" data-column-index="' + columnIndex + '" data-row-index="' + index + '" data-button-index="' + i + '"><i class="' + icon + '"></i>' + (text ? ' ' + text : '') + '</a>'); + html.push('<a href="' + url + '" class="' + classname + '" ' + (confirm ? confirm + ' ' : '') + (refresh ? refresh + ' ' : '') + extend + ' title="' + title + '" data-table-id="' + (table ? table.attr("id") : '') + '" data-field-index="' + fieldIndex + '" data-row-index="' + index + '" data-button-index="' + i + '"><i class="' + icon + '"></i>' + (text ? ' ' + text : '') + '</a>'); } }); return html.join(' '); -- libgit2 0.24.0