diff --git a/conditional_fields.libraries.yml b/conditional_fields.libraries.yml
index 4b83c2c42303aadd90d7c9bfc8858768e351da6e..0e31249865152706ad197e8c433172d6d68c1ffd 100644
--- a/conditional_fields.libraries.yml
+++ b/conditional_fields.libraries.yml
@@ -4,6 +4,7 @@ conditional_fields:
   dependencies:
     - core/jquery
     - core/drupal.states
+    - core/once
 
 admin:
   css:
diff --git a/js/conditional_fields.js b/js/conditional_fields.js
index 61e0bbde4c2c5571189b7df3551114b48eb21ed1..15045c8eb5807eedbb492cf09fc112827796bb5c 100644
--- a/js/conditional_fields.js
+++ b/js/conditional_fields.js
@@ -195,6 +195,13 @@
             }
             e.effect = effect;
             originalHandler(e);
+
+            // Ensure Drupal behaviors get attached to visible fields only once.
+            if (e.type === 'state:visible') {
+              once('conditional-fields', e.target).forEach(() => {
+                Drupal.attachBehaviors(e.target);
+              });
+            }
           };
         }
       });