diff --git a/reference_option_limit.module b/reference_option_limit.module
index fd6d9c7..13fd59b 100644
--- a/reference_option_limit.module
+++ b/reference_option_limit.module
@@ -258,6 +258,35 @@ function reference_option_limit_field_widget_form_alter(&$element, &$form_state,
  */
 function reference_option_limit_form_alter(&$form, &$form_state, $form_id) {
   if (isset($form_state['reference_option_limit'])) {
+    // If we are on an AJAX call, check that it's one that concerns us.
+    if (!empty($form_state['triggering_element'])) {
+      if (empty($form_state['triggering_element']['#field_name'])) {
+        // The AJAX button has nothing to do with any field. Therefore it's of
+        // no concern to us: bail.
+        return;
+      }
+
+      // Flag to keep track of whether we've matched something. If it remains
+      // FALSE after the foreach loop, we should not go further.
+      $match = FALSE;
+      // Check each limited field to see if the AJAX trigger is one of its
+      // matching fields.
+      foreach ($form_state['reference_option_limit'] as $field) {
+        // Try to find triggering element field name in the list of matching
+        // fields.
+        if (in_array(
+              $form_state['triggering_element']['#field_name'],
+              $field['fields_match']
+            )) {
+          $match = TRUE;
+        }
+      }
+      if ($match == FALSE) {
+        // The triggering element has nothing to do with our fields: bail.
+        return;
+      }
+    }
+
     //dsm($form, 'hfa form');
     //dsm($form_state, 'hfa fs');
 
