diff --git a/save_draft.module b/save_draft.module
index 9ccdfc8..c7d2eac 100644
--- a/save_draft.module
+++ b/save_draft.module
@@ -273,3 +273,27 @@ function _save_draft_remove_required(array &$elements) {
     $elements['#required'] = FALSE;
   }
 }
+
+/**
+ * Implements hook_field_validation_rules_alter().
+ */
+function save_draft_field_validation_rules_alter(&$rules, $context) {
+  // We only deal with nodes.
+  if ($context['entity_type'] == 'node') {
+    // We determine saving as draft by whether or not the node is published, as
+    // long as save as draft is enabled for the content type.
+    if (variable_get('save_draft_enabled_' . $context['bundle'], SAVE_DRAFT_ENABLED) && !$context['entity']->status) {
+      $whitelisted_validators = array(
+        'field_validation_required_validator',
+        'field_validation_someofseveral_validator',
+      );
+
+      // Remove any whitelisted validatos from the set so that they aren't run.
+      foreach ($rules as $key => $rule) {
+        if (in_array($rule->validator, $whitelisted_validators)) {
+          unset($rules[$key]);
+        }
+      }
+    }
+  }
+}
