diff --git a/uc_out_of_stock.js b/uc_out_of_stock.js
index b5dbe7d..1ffedae 100644
--- a/uc_out_of_stock.js
+++ b/uc_out_of_stock.js
@@ -20,8 +20,9 @@ Drupal.behaviors.ucOutOfStock =  function() {
       attributes.found = new Object();
       attributes.value = new Object();
 
-      $(":input[@name*=attributes]:not(:text)", form).each(function(index){
-        id = $(this).attr('name').substring(11,$(this).attr('name').length-1);
+      $("[name*=attributes]", form).filter(':input:not(:text):not(:checkbox)').each(function(index){
+        // We are assuming the value has to be there, seems to be working for radios and checkboxes
+        id = $(this).attr('name').match(/attributes\[([0-9]*)\]/)[1];
         if ($(this).is(':radio')) {
           attributes.found['attr'+id] = 1;
           if ($(this).is(':checked')) {
@@ -31,7 +32,7 @@ Drupal.behaviors.ucOutOfStock =  function() {
             }
           }
         }
-        else {
+        else if ($(this).is('select')) {
           attributes.found['attr'+id] = 1;
           if ($(this).val()) {
             attributes.value['attr'+id] = 1;
@@ -60,12 +61,6 @@ Drupal.behaviors.ucOutOfStock =  function() {
           attributes.value.length++;
         }
       }
-      if (attributes.found.length != attributes.value.length) {
-        // Put back the normal HTML of the add to cart form
-        $(".uc_out_of_stock_html", form).html('');
-        $("input:submit.node-add-to-cart,input:submit.list-add-to-cart", form).show();
-        return;
-      }
 
       if (Drupal.settings.uc_out_of_stock.throbber) {
         $(".uc_out_of_stock_throbbing", form).addClass('uc_oos_throbbing');
@@ -151,7 +146,7 @@ Drupal.behaviors.ucOutOfStock =  function() {
     $("input:submit.node-add-to-cart,input:submit.list-add-to-cart", $(this)).after('<div class="uc_out_of_stock_html"></div>');
     var form = $(this);
 
-    $(":input[name*=attributes]:not(:text)", $(this)).change(function(){
+    $("[name*=attributes]", $(this)).filter(':input:not(:text):not(:checkbox)').change(function(){
       checkStock([form]);
     });
     /* TODO: Feature request - support qty field, would make sense if cart
diff --git a/uc_out_of_stock.module b/uc_out_of_stock.module
index 7b5525b..2aa184c 100644
--- a/uc_out_of_stock.module
+++ b/uc_out_of_stock.module
@@ -301,6 +301,13 @@ function uc_out_of_stock_validate_form_addtocart($form, &$form_state) {
   // i.e. If some other form_alter added another button, do nothing (uc_wishlist)
   if ($class == 'node-add-to-cart' || $class == 'list-add-to-cart') {
     $attrs = $form_state['values']['attributes'];
+    foreach ((array)$attrs as $aid => $oids) {
+      $attribute = uc_attribute_load($aid);
+      // 1 is select and 2 is radio, the only supported attributes that may have stock adjustments
+      if ($attribute->display != 1 && $attribute->display != 2) {
+        unset($attrs[$aid]);
+      }
+    }
     $nid = $form_state['values']['nid'];
     $qty = $form_state['values']['qty'] ? $form_state['values']['qty'] : 1;
 
