Browse Source

Merge pull request #1185 from hajekj/master

Support two new events in the editable plugin
文翼 10 years ago
parent
commit
684416d4c1

+ 12 - 0
src/extensions/editable/README.md

@@ -36,6 +36,18 @@ Fired when an editable cell is saved.
 
 parameters: field, row, oldValue, $el
 
+### onEditableShown(editable-shown.bs.table)
+
+Fired when an editable cell is opened for edits.
+
+parameters: field, row, $el, editable
+
+### onEditableHidden(editable-hidden.bs.table)
+
+Fired when an editable cell is hidden / closed.
+
+parameters: field, row, $el
+
 ## The existing problems
 
 * Editable extension does not support searchable in the select type.

+ 25 - 1
src/extensions/editable/bootstrap-table-editable.js

@@ -14,12 +14,20 @@
         },
         onEditableSave: function (field, row, oldValue, $el) {
             return false;
+        },
+        onEditableShown: function (field, row, $el, editable) {
+            return false;
+        },
+        onEditableHidden: function (field, row, $el) {
+            return false;
         }
     });
 
     $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
         'editable-init.bs.table': 'onEditableInit',
-        'editable-save.bs.table': 'onEditableSave'
+        'editable-save.bs.table': 'onEditableSave',
+        'editable-shown.bs.table': 'onEditableShown',
+        'editable-hidden.bs.table': 'onEditableHidden'
     });
 
     var BootstrapTable = $.fn.bootstrapTable.Constructor,
@@ -76,6 +84,22 @@
                     row[column.field] = params.submitValue;
                     that.trigger('editable-save', column.field, row, oldValue, $(this));
                 });
+            that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)
+                .off('shown').on('shown', function (e) {
+                    var data = that.getData(),
+                        index = $(this).parents('tr[data-index]').data('index'),
+                        row = data[index];
+                    
+                    that.trigger('editable-shown', column.field, row, $(this));
+                });
+            that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)
+                .off('hidden').on('hidden', function (e, editable) {
+                    var data = that.getData(),
+                        index = $(this).parents('tr[data-index]').data('index'),
+                        row = data[index];
+                    
+                    that.trigger('editable-hidden', column.field, row, $(this), editable);
+                });
         });
         this.trigger('editable-init');
     };