diff --git a/misc/states.js b/misc/states.js
index 5aac65d..0680be3 100644
--- a/misc/states.js
+++ b/misc/states.js
@@ -493,7 +493,8 @@ $(document).bind('state:disabled', function(e) {
 $(document).bind('state:required', function(e) {
   if (e.trigger) {
     if (e.value) {
-      var $label = $(e.target).closest('.form-item, .form-wrapper').find('label');
+      var label = 'label' + (e.target.id ? '[for=' + e.target.id + ']' : '');
+      var $label = $(e.target).closest('.form-item, .form-wrapper').find(label);
       // Avoids duplicate required markers on initialization.
       if (!$label.find('.form-required').length) {
         $label.append('<span class="form-required">*</span>');
