diff --git a/css/webform.css b/css/webform.css
index 036d199..60cb215 100644
--- a/css/webform.css
+++ b/css/webform.css
@@ -10,6 +10,20 @@ input.webform-calendar {
 html.js input.webform-calendar {
   display: inline;
 }
+fieldset.webform-container {
+  background: transparent;
+  border: none;
+  padding: 0;
+  margin: 0;
+  position: static;
+  height: auto;
+  width: auto;
+  left: auto;
+  top: auto;
+}
+fieldset.webform-container legend.webform-container-legend {
+  display: none;
+}
 .webform-container-inline label {
   display: inline;
   margin-right: 1em;
diff --git a/webform.module b/webform.module
index a18b97f..8489a1e 100644
--- a/webform.module
+++ b/webform.module
@@ -2702,14 +2702,20 @@ function theme_webform_element($variables) {
   if (isset($element['#title_display']) && strcmp($element['#title_display'], 'inline') === 0) {
     $wrapper_classes[] = 'webform-container-inline';
   }
-  $output = '<div class="' . implode(' ', $wrapper_classes) . '" id="webform-component-' . $parents . '">' . "\n";
+
+  $multiple_elements = count(element_children($element)) > 1;
+  if ($multiple_elements) {
+    $variables['element']['#id'] = NULL;
+  }
 
   // If #title is not set, we don't display any label or required marker.
   if (!isset($element['#title'])) {
     $element['#title_display'] = 'none';
   }
+
   $prefix = isset($element['#field_prefix']) ? '<span class="field-prefix">' . _webform_filter_xss($element['#field_prefix']) . '</span> ' : '';
   $suffix = isset($element['#field_suffix']) ? ' <span class="field-suffix">' . _webform_filter_xss($element['#field_suffix']) . '</span>' : '';
+  $output = '';
 
   switch ($element['#title_display']) {
     case 'inline':
@@ -2735,9 +2741,25 @@ function theme_webform_element($variables) {
     $output .= ' <div class="description">' . $element['#description'] . "</div>\n";
   }
 
-  $output .= "</div>\n";
+  // If this is a group of elements, display as a fieldset for accessibility.
+  $wrapped_output = '';
+  if ($multiple_elements) {
+    $wrapped_output .= '<fieldset class="webform-container">';
+    $wrapped_output .= '<legend class="webform-container-legend">' . $element['#title'] . '</legend>';
+    $wrapped_output .= $output;
+    $wrapped_output .= '</fieldset>';
+  }
+  else {
+    $wrapped_output = $output;
+  }
 
-  return $output;
+  // Then wrap the whole thing in our main wrapper.
+  $wrapped_output = '';
+  $wrapped_output .= '<div class="' . implode(' ', $wrapper_classes) . '" id="webform-component-' . $parents . '">' . "\n";
+  $wrapped_output .= $output;
+  $wrapped_output .= "</div>\n";
+
+  return $wrapped_output;
 }
 
 /**
