Rather than preventing multiple items to be selected, hide actions that aren't 
appropriate for the active item selection. This is a pattern that will be 
repeated on many other pages.
---
 src/app/views/users/index.haml |   36 +++++++++++++++++++-----------------
 1 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/src/app/views/users/index.haml b/src/app/views/users/index.haml
index 4fc15c8..41b0f0e 100644
--- a/src/app/views/users/index.haml
+++ b/src/app/views/users/index.haml
@@ -30,7 +30,7 @@
       %tr
         %td
           - is_first_user = (user == @users.first)
-          %input{:checked => is_first_user, :name => "user_checkbox", :type => 
"checkbox", :value => user.id, :onchange => "update_link(#{user.id})", :id => 
"user_checkbox_#{user.id}" }
+          %input{:checked => is_first_user, :name => "user_checkbox", :type => 
"checkbox", :value => user.id, :id => "user_checkbox_#{user.id}" }
         %td= link_to user.login, user, :id => user.id
         %td= user.last_name
         %td= user.first_name
@@ -41,20 +41,22 @@
         =link_to "", user_url(user.id), :id => "delete_user_" + user.id.to_s
 
 :javascript
-  function update_link(id)
-  {
-    var checkbox = document.getElementById('user_checkbox_' + id)
-    if(checkbox.checked)
-    {
-      var checkboxes = document.getElementsByName("user_checkbox")
-      for(var i = 0; i < checkboxes.length; i++)
-      {
-         checkboxes[i].checked = false
+  $(document).ready(function () {
+    var $checkboxes = $("input[type='checkbox']");
+    $checkboxes.change(function () {
+      var $checked = $("input[type='checkbox']:checked"),
+      $edit = $("dd.edit"),
+      $delete = $("dd.delete");
+      if ($checked.length === 0) {
+        //disable the edit and delete action if there is none selected
+        $edit.hide(200);
+        $delete.hide(200);
+      } else if ($checked.length > 1) {
+        $edit.hide(200);
+        $delete.show(200);
+      } else {
+        $edit.show(200);
+        $delete.show(200);
       }
-      checkbox.checked = true
-    }
-    else
-    {
-      checkbox.checked = true
-    }
-  }
+    }).change();
+  });
-- 
1.7.2.3

_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to