diff --git a/django/contrib/admin/media/css/changelists.css b/django/contrib/admin/media/css/changelists.css
index 4303378..65ae083 100644
--- a/django/contrib/admin/media/css/changelists.css
+++ b/django/contrib/admin/media/css/changelists.css
@@ -228,6 +228,14 @@
     border-right: 1px solid #ddd;
 }
 
+.action_counter{
+    font-size: 11px;
+    margin: 0 0.5em;
+    padding-right: 0.5em;
+    border-right: 1px solid #ccc;
+    display: none;
+}
+
 #changelist table input {
     margin: 0;
 }
diff --git a/django/contrib/admin/media/js/actions.js b/django/contrib/admin/media/js/actions.js
index d34488a..b82bd13 100644
--- a/django/contrib/admin/media/js/actions.js
+++ b/django/contrib/admin/media/js/actions.js
@@ -1,10 +1,22 @@
 var Actions = {
     init: function() {
-        var selectAll = document.getElementById('action-toggle');
+        counterSpans = document.getElementsBySelector('span._acnt');
+        counterContainer = document.getElementsBySelector('span.action_counter');
+        actionCheckboxes = document.getElementsBySelector('tr input.action-select');
+        selectAll = document.getElementById('action-toggle');
+        for(var i = 0; i < counterContainer.length; i++) {
+            counterContainer[i].style.display = 'inline';
+        }
         if (selectAll) {
             selectAll.style.display = 'inline';
             addEvent(selectAll, 'click', function() {
                 Actions.checker(selectAll.checked);
+                Actions.counter();
+            });
+        }        
+        for(var i = 0; i < actionCheckboxes.length; i++) {
+            addEvent(actionCheckboxes[i], 'click', function() {
+                Actions.counter();
             });
         }
         var changelistTable = document.getElementsBySelector('#changelist table')[0];
@@ -16,6 +28,7 @@ var Actions = {
                 if (target.className == 'action-select') {
                     var tr = target.parentNode.parentNode;
                     Actions.toggleRow(tr, target.checked);
+                    Actions.checked();
                 }
             });
         }
@@ -27,13 +40,26 @@ var Actions = {
             tr.className = tr.className.replace(' selected', '');
         }  
     },
+    checked: function() {
+        selectAll.checked = false;
+    },
     checker: function(checked) {
-        var actionCheckboxes = document.getElementsBySelector('tr input.action-select');
         for(var i = 0; i < actionCheckboxes.length; i++) {
             actionCheckboxes[i].checked = checked;
             Actions.toggleRow(actionCheckboxes[i].parentNode.parentNode, checked);
         }
+    },
+    counter: function() {
+        counter = 0;
+        for(var i = 0; i < actionCheckboxes.length; i++) {
+            if(actionCheckboxes[i].checked){
+                counter++;
+            }
+        }
+        for(var i = 0; i < counterSpans.length; i++) {
+            counterSpans[i].innerHTML = counter;
+        }
     }
 };
 
-addEvent(window, 'load', Actions.init);
+addEvent(window, 'load', Actions.init);
\ No newline at end of file
diff --git a/django/contrib/admin/templates/admin/actions.html b/django/contrib/admin/templates/admin/actions.html
index bf4b975..4fea071 100644
--- a/django/contrib/admin/templates/admin/actions.html
+++ b/django/contrib/admin/templates/admin/actions.html
@@ -1,5 +1,12 @@
 {% load i18n %}
 <div class="actions">
+    <span class="action_counter">
+    {% ifequal cl.result_count 1 %}
+        {% blocktrans with cl.result_count as total_count and cl.opts.verbose_name as module_name %}<span class="_acnt">0</span> of {{ total_count }} {{ module_name }} selected{% endblocktrans %}
+    {% else %}
+        {% blocktrans with cl.result_count as total_count and cl.opts.verbose_name_plural as module_name %}<span class="_acnt">0</span> of {{ total_count }} {{ module_name }} selected{% endblocktrans %}
+    {% endifequal %}
+    </span>
     {% for field in action_form %}<label>{{ field.label }} {{ field }}</label>{% endfor %}
     <button type="submit" class="button" title="{% trans "Run the selected action" %}" name="index" value="{{ action_index|default:0 }}">{% trans "Go" %}</button>
 </div>
