diff --git a/nodeconnect.form.inc b/nodeconnect.form.inc
index b2cabb8..b8623c5 100644
--- a/nodeconnect.form.inc
+++ b/nodeconnect.form.inc
@@ -11,16 +11,28 @@
  */
 function _nodeconnect_field_attach_form($entity_type, $entity, &$form, &$form_state, $langcode=LANGUAGE_NONE, $field_name, $field) {
   $language = $form[$field_name]['#language'];
-  // Add a class for single value fields, this class will be referenced in js
-  $extra = $form[$field_name][$language]['#cardinality'] == 1 ? 'single-value' : '';
-  $field_title = $form[$field_name][$language]['#title'];
-
-  foreach ($form[$field_name][$language] as $key => &$widget_element) {
-    if (is_numeric($key)) {
-      // Add button
-      _nodeconnect_form_element_new($widget_element, $language, $field_name, $field_title, $key, $extra);
-      // Edit button
-      _nodeconnect_form_element_edit($widget_element, $language, $field_name, $field_title, $key, $extra);
+  // Check widget type
+  if (isset($form[$field_name][$language]['#type'])) {
+    $field_title = $form[$field_name][$language]['#title'];
+    // Add button
+    _nodeconnect_form_element_new($form[$field_name], $language, $field_name, $field_title, '0');
+    // Edit button - Do not show for multiple selects
+    if (empty($form[$field_name][$language]['#multiple'])) {
+      _nodeconnect_form_element_edit($form[$field_name], $language, $field_name, $field_title, '0', 'select');
+    }
+  }
+  else {
+    // Add a class for single value fields, this class will be referenced in js
+    $extra = $form[$field_name][$language]['#cardinality'] == 1 ? 'single-value text' : 'text';
+    $field_title = $form[$field_name][$language]['#title'];
+
+    foreach ($form[$field_name][$language] as $key => &$widget_element) {
+      if (is_numeric($key)) {
+        // Add button
+        _nodeconnect_form_element_new($widget_element, $language, $field_name, $field_title, $key, $extra);
+        // Edit button
+        _nodeconnect_form_element_edit($widget_element, $language, $field_name, $field_title, $key, $extra);
+      }
     }
   }
 }
@@ -180,9 +192,22 @@ function nodeconnect_return_node_form_alter(&$form, &$form_state, $form_id, $cac
     //if ($data['add_child']  && isset($data['nid']) && $form_state['rebuild']=== TRUE && ($node = node_load($data['nid'])) ) {
     if (isset($data['nid']) && $form_state['rebuild']=== TRUE && ($node = node_load($data['nid'])) ) {
       $element['#default_value'] = $node->nid;
-      //use the autocompleate value so we are sure we validate
-      $value =  node_reference_autocomplete_value($element, FALSE, $form_state);
-      $form_state['input'][$data['field']][$language][$data['key']]['nid'] = $value;
+
+      if (!is_array($form_state['input'][$data['field']][$language])) {
+        drupal_set_message('hmm, making this an array, better keep it in!');
+        $form_state['input'][$data['field']][$language] = array();
+      }
+      // Different processing if noderef is an autocomplete or a select.
+      switch ($form[$data['field']][$language]['#type']) {
+        case 'select':
+          $form_state['input'][$data['field']][$language] = $node->nid;
+          break;
+        default:
+          // Use the autocomplete value so we are sure we validate.
+          $value =  node_reference_autocomplete_value($element, FALSE, $form_state);
+          $form_state['input'][$data['field']][$language][$data['key']]['nid'] = $value;
+          break;
+      }
     }
       
     $form_state['#nodeconnect_processed'] = TRUE;
diff --git a/nodeconnect.js b/nodeconnect.js
index 13094c5..8ddc253 100644
--- a/nodeconnect.js
+++ b/nodeconnect.js
@@ -8,8 +8,8 @@
       $(".nodeconnect-edit.single-value", context).each( function() {
         $(this).insertAfter($(this).next().find("label"));
       });
-      $(".nodeconnect-edit", context).each( function() {
-        edit = $(this).find('input');
+      $(".nodeconnect-edit.text", context).each( function() {
+        var edit = $(this).find('input');
         text = $(this).siblings("[type='text']");
         if(text.length == 0 ) {
           text = $(this).siblings().find("[type='text']");
@@ -25,7 +25,22 @@
           })
           .trigger('change');
       });
-      
+      $(".nodeconnect-edit.select", context).each( function() {
+        var edit = $(this).find('input');
+        select = $(this).siblings('div.form-type-select').children('select');
+        if (select.length > 0) {
+          select
+            .bind('change', function(e) {
+              if ($(this).val() == '_none') {
+                $(edit).attr('disabled', 'disabled');
+              }
+              else {
+                $(edit).attr('disabled', '');
+              }
+            })
+            .trigger('change');
+        }
+      });      
     },
   };
 })(jQuery);
