diff --git a/misc/tableselect.js b/misc/tableselect.js
index fee63a9..4a970a0 100644
--- a/misc/tableselect.js
+++ b/misc/tableselect.js
@@ -21,6 +21,7 @@ Drupal.tableSelect = function () {
     $(table).prev('table.sticky-header').andSelf().find('th.select-all input:checkbox').each(function() {
       $(this).attr('title', state ? strings.selectNone : strings.selectAll);
       this.checked = state;
+      $(this).change();
     });
   };
 
@@ -32,7 +33,7 @@ Drupal.tableSelect = function () {
         this.checked = event.target.checked;
         // Either add or remove the selected class based on the state of the check all checkbox.
         $(this).closest('tr').toggleClass('selected', this.checked);
-      });
+      }).change();
       // Update the title and the state of the check all box.
       updateSelectAll(event.target.checked);
     }
@@ -74,7 +75,7 @@ Drupal.tableSelectRange = function (from, to, state) {
     $(i).toggleClass('selected', state);
     $('input:checkbox', i).each(function () {
       this.checked = state;
-    });
+    }).change();
 
     if (to.nodeType) {
       // If we are at the end of the range, stop.
diff --git a/modules/user/user.permissions.js b/modules/user/user.permissions.js
index 988820e..8a72fa7 100644
--- a/modules/user/user.permissions.js
+++ b/modules/user/user.permissions.js
@@ -59,10 +59,10 @@ Drupal.behaviors.permissions = {
     // permissions. Therefore, we toggle visibility directly.
     $row.find('.real-checkbox').each(function () {
       this.style.display = (authCheckbox.checked ? 'none' : '');
-    });
+    }).trigger('displayChange', (authCheckbox.checked ? 'none' : ''));
     $row.find('.dummy-checkbox').each(function () {
       this.style.display = (authCheckbox.checked ? '' : 'none');
-    });
+    }).trigger('displayChange', (authCheckbox.checked ? '' : 'none'));
   }
 };
 
