diff --git a/drupal/sites/all/modules/autocomplete_deluxe/autocomplete_deluxe.js b/drupal/sites/all/modules/autocomplete_deluxe/autocomplete_deluxe.js
index bafc61a..b830eb4 100755
--- a/drupal/sites/all/modules/autocomplete_deluxe/autocomplete_deluxe.js
+++ b/drupal/sites/all/modules/autocomplete_deluxe/autocomplete_deluxe.js
@@ -160,6 +160,7 @@
     });
     this.jqObject.keyup(function(event) {
       if (instance.multiple && (event.which == 188 || event.which == 13)) {
+        if (event.which == 188 && instance.jqObject.val().substring(0, 1) == "\"") return;
         instance.jqObject.val('');
         instance.close();
       }
@@ -354,6 +355,8 @@
     if (this.multiple && (event.which == 44 || event.which == 13)) {
       var val = this.autocomplete.jqObject.val();
       if (val != '') {
+        if (event.which == 44 && val.substring(0, 1) == "\"") return;
+console.log('test');
         this.addValue(val);
       }
     }
@@ -499,7 +502,7 @@
       this.valueField = this.autocomplete.jqObject.parent().parent().children('div.autocomplete-deluxe-value-container').children().children();
       this.valueField.hide();
       this.autocomplete.jqObject.show();
-      this.values = (this.valueField.val().split(',') != "") ? this.valueField.val().split(',')  : new Array();
+      this.values = (this.valueField.val().split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/) != "") ? this.valueField.val().split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)  : new Array();
       for (var i in this.values) {
         if (this.values[i] != "" && this.values[i] != " ") {
           new Drupal.autocomplete_deluxe.value(this.values[i], this);
@@ -544,6 +547,10 @@
       this.response(request, response, (terms));
       return;
     }
+
+    // remove quotes when searching terms
+    request.term = request.term.replace(/"/g, '');
+
     $.ajax({
       url: this.uri + '/' + request.term,
       dataType: this.dataType,
diff --git a/drupal/sites/all/modules/autocomplete_deluxe/autocomplete_deluxe.module b/drupal/sites/all/modules/autocomplete_deluxe/autocomplete_deluxe.module
index a29180a..62fec94 100755
--- a/drupal/sites/all/modules/autocomplete_deluxe/autocomplete_deluxe.module
+++ b/drupal/sites/all/modules/autocomplete_deluxe/autocomplete_deluxe.module
@@ -85,13 +85,12 @@ function taxonomy_autocomplete_deluxe($field_name, $tags_typed = '') {
   $term_matches = array();
   foreach ($tags_return as $tid => $name) {
     $n = $name;
+
     // Term names containing commas or quotes must be wrapped in quotes.
     if (strpos($name, ',') !== FALSE || strpos($name, '"') !== FALSE) {
       $n = '"' . str_replace('"', '""', $name) . '"';
-    }
-    else {
-      $term_matches[$prefix . $n] = check_plain($name);
-    }
+    }   
+    $term_matches[$prefix . $n] = check_plain($name);
   }
 
   drupal_json_output($term_matches);
@@ -355,7 +354,7 @@ function autocomplete_deluxe_after_build($element, &$form_state) {
   }
   else {
     if (!empty($form_state['autocomplete_deluxe']['terms']) && !empty($element['#multiple'])) {
-      $element['#value'] = (!empty($element['list_value']['#value'])) ? implode(',', $element['list_value']['#value']) : "";
+      $element['#value'] = (!empty($element['list_value']['#value'])) ? drupal_implode_tags($element['list_value']['#value']) : "";
     }
     else {
       $element['#value'] = $element['list_value']['#value'];
