diff --git a/mod/data/field/checkbox/field.class.php b/mod/data/field/checkbox/field.class.php
index 7571d07..9cb9965 100644
--- a/mod/data/field/checkbox/field.class.php
+++ b/mod/data/field/checkbox/field.class.php
@@ -40,6 +40,7 @@ class data_field_checkbox extends data_field_base {
 
         $str = '<div title="'.s($this->field->description).'">';
         $str .= '<fieldset><legend><span class="accesshide">'.$this->field->name.'</span></legend>';
+        $class = $this->get_class_name();
 
         $i = 0;
         foreach (explode("\n", $this->field->param1) as $checkbox) {
@@ -47,9 +48,9 @@ class data_field_checkbox extends data_field_base {
             if ($checkbox === '') {
                 continue; // skip empty lines
             }
-            $str .= '<input type="hidden" name="field_' . $this->field->id . '[]" value="" />';
+            $str .= '<input type="hidden" name="field_' . $this->field->id . '[]" value="" class="'.$class.'" />';
             $str .= '<input type="checkbox" id="field_'.$this->field->id.'_'.$i.'" name="field_' . $this->field->id . '[]" ';
-            $str .= 'value="' . s($checkbox) . '" ';
+            $str .= 'value="' . s($checkbox) . '" class="'.$class.'" ';
 
             if (array_search($checkbox, $content) !== false) {
                 $str .= 'checked />';
diff --git a/mod/data/field/textarea/field.class.php b/mod/data/field/textarea/field.class.php
index 3fc7a71..1b7c879 100644
--- a/mod/data/field/textarea/field.class.php
+++ b/mod/data/field/textarea/field.class.php
@@ -124,8 +124,9 @@ class data_field_textarea extends data_field_base {
             $formats[$fid] = $strformats[$fid];
         }
         $editor->use_editor($field, $options, $fpoptions);
+        $class = $this->get_class_name();
         $str .= '<input type="hidden" name="'.$field.'_itemid" value="'.$draftitemid.'" />';
-        $str .= '<div><textarea id="'.$field.'" name="'.$field.'" rows="'.$this->field->param3.'" cols="'.$this->field->param2.'" spellcheck="true">'.s($text).'</textarea></div>';
+        $str .= '<div><textarea id="'.$field.'" name="'.$field.'" rows="'.$this->field->param3.'" cols="'.$this->field->param2.'" spellcheck="true" class="'.$class.'">'.s($text).'</textarea></div>';
         $str .= '<div><label class="accesshide" for="' . $field . '_content1">' . get_string('format') . '</label>';
         $str .= '<select id="' . $field . '_content1" name="'.$field.'_content1">';
         foreach ($formats as $key=>$desc) {
diff --git a/mod/data/field/url/field.class.php b/mod/data/field/url/field.class.php
index 7656e8f..1946785 100644
--- a/mod/data/field/url/field.class.php
+++ b/mod/data/field/url/field.class.php
@@ -38,6 +38,7 @@ class data_field_url extends data_field_base {
         $fp = new file_picker($args);
         $options = $fp->options;
 
+        $class = $this->get_class_name();
         $fieldid = 'field_url_'.$options->client_id;
 
         $straddlink = get_string('choosealink', 'repository');
@@ -54,14 +55,14 @@ class data_field_url extends data_field_base {
             $str .= '<table><tr><td align="right">';
             $str .= get_string('url','data').':</td><td>';
             $str .= '<label class="accesshide" for="' . $fieldid . '">'. $this->field->name .'</label>';
-            $str .= '<input type="text" name="field_'.$this->field->id.'_0" id="'.$fieldid.'" value="'.$url.'" size="60" />';
+            $str .= '<input type="text" name="field_'.$this->field->id.'_0" id="'.$fieldid.'" value="'.$url.'" size="60" class="'.$class.'" />';
             $str .= '<button id="filepicker-button-'.$options->client_id.'" style="display:none">'.$straddlink.'</button></td></tr>';
             $str .= '<tr><td align="right">'.get_string('text','data').':</td><td><input type="text" name="field_'.$this->field->id.'_1" id="field_'.$this->field->id.'_1" value="'.s($text).'" size="60" /></td></tr>';
             $str .= '</table>';
         } else {
             // Just the URL field
             $str .= '<label class="accesshide" for="' . $fieldid . '">'. $this->field->name .'</label>';
-            $str .= '<input type="text" name="field_'.$this->field->id.'_0" id="'.$fieldid.'" value="'.s($url).'" size="60" />';
+            $str .= '<input type="text" name="field_'.$this->field->id.'_0" id="'.$fieldid.'" value="'.s($url).'" size="60" class="'.$class.'" />';
             $str .= '<button id="filepicker-button-'.$options->client_id.'" style="display:none">'.$straddlink.'</button>';
         }
 
diff --git a/mod/data/lib.php b/mod/data/lib.php
index 8123cc8..dcf119d 100644
--- a/mod/data/lib.php
+++ b/mod/data/lib.php
@@ -191,6 +191,14 @@ class data_field_base {     // Base class for Database Field Types (see field/*/
         return true;
     }
 
+    /**
+     * Returns the name of the field, formatted as a CSS class
+     * @return string
+     */
+    public function get_class_name() {
+        return 'field_'.clean_param($this->field->name, PARAM_ALPHANUMEXT);
+    }
+
 
     /**
      * Update a field in the database
@@ -242,9 +250,10 @@ class data_field_base {     // Base class for Database Field Types (see field/*/
             $content='';
         }
 
+        $class = $this->get_class_name();
         $str = '<div title="'.s($this->field->description).'">';
         $str .= '<label class="accesshide" for="field_'.$this->field->id.'">'.$this->field->description.'</label>';
-        $str .= '<input class="basefieldinput" type="text" name="field_'.$this->field->id.'" id="field_'.$this->field->id.'" value="'.s($content).'" />';
+        $str .= '<input class="basefieldinput '.$class.'" type="text" name="field_'.$this->field->id.'" id="field_'.$this->field->id.'" value="'.s($content).'" />';
         $str .= '</div>';
 
         return $str;
