diff --git a/autocomplete.inc b/autocomplete.inc
index 07aba8d6..45bd8792 100644
--- a/autocomplete.inc
+++ b/autocomplete.inc
@@ -162,15 +162,12 @@ function _webform_edit_autocomplete($component) {
  */
 function _webform_autocomplete_admin_validate($form, &$form_state) {
   $extra = $form_state['values']['extra'];
-  if ($extra['autocomplete_restrict'] && !$extra['autocomplete_items']) {
-    form_error($form['validation']['autocomplete_restrict'], t('You have chosen to restrict submissions to listed options, but have not entered any options.'));
+  if ($extra['autocomplete_restrict'] && (!$extra['autocomplete_items'] && !$extra['autocomplete_taxonomy'])) {
+    form_error($form['validation']['autocomplete_restrict'], t('You have chosen to restrict submissions to listed options, but have not entered any options or a taxonomy.'));
   }
   if ($extra['autocomplete_restrict'] && $extra['autocomplete_existing']) {
     form_error($form['validation']['autocomplete_restrict'], t('You cannot choose both "Restrict to listed values" and "Autocomplete from existing submissions."'));
   }
-  if ($extra['autocomplete_restrict'] && $extra['autocomplete_taxonomy']) {
-    form_error($form['validation']['autocomplete_restrict'], t('You cannot choose both "Restrict to listed values" and "Autocomplete from existing taxonomy terms."'));
-  }
   if (!is_numeric($extra['autocomplete_result_count']) || $extra['autocomplete_result_count'] < 1) {
     form_error($form['display']['autocomplete_result_count'], t('You must choose to display at least one result'));
   }
@@ -212,7 +209,11 @@ function _webform_render_autocomplete($component, $value = NULL, $filter = TRUE)

   // Restrict to listed options.
   if ($component['extra']['autocomplete_restrict']) {
-    $element['#element_validate'][] = 'webform_autocomplete_validate_restricted';
+    if (strlen($component['extra']['autocomplete_taxonomy']) > 0 && $component['extra']['autocomplete_taxonomy'] != '0') {
+      $element['#element_validate'][] = 'webform_autocomplete_validate_restricted_taxonomy';
+    } else {
+      $element['#element_validate'][] = 'webform_autocomplete_validate_restricted';
+    }
   }

   // Change the 'width' option to the correct 'size' option.
diff --git a/webform_autocomplete.module b/webform_autocomplete.module
index b0423265..b3406fab 100644
--- a/webform_autocomplete.module
+++ b/webform_autocomplete.module
@@ -85,6 +85,24 @@ function webform_autocomplete_validate_restricted($element, &$form_state) {
 }

 /**
+ * Validation callback for webform component for taxonomies.
+ */
+function webform_autocomplete_validate_restricted_taxonomy($element, &$form_state) {
+  $voc_name = $element['#webform_component']['extra']['autocomplete_taxonomy'];
+  $voc = taxonomy_vocabulary_machine_name_load($voc_name);
+  $terms = entity_load('taxonomy_term', FALSE, array('vid' => $voc->vid));
+
+  $term_options = array();
+  foreach ($terms as $id => $term) {
+    $term_options[] = $term->name;
+  }
+
+  if (!in_array($element['#value'], $term_options)) {
+    form_error($element, t('Invalid choice for @field.', array('@field' => $element['#title'])));
+  }
+}
+
+/**
  * Implements hook_form_builder_element_types().
  * @param string $form_type
  * @param int $form_id
