Index: django/contrib/admin/options.py
===================================================================
--- django/contrib/admin/options.py	(revision 6843)
+++ django/contrib/admin/options.py	(working copy)
@@ -188,7 +188,15 @@
             return formfield
 
         # For any other type of field, just call its formfield() method.
-        return db_field.formfield(**kwargs)
+        formfield = db_field.formfield(**kwargs)
+        # append name to class
+        if formfield: # else a non-editable field
+            attrs = formfield.widget.attrs
+            field_class = 'v%s' % (formfield.__class__.__name__)
+            if attrs.get('class'): # prepend to existing classes
+                field_class += ' %s' % attrs.get('class')
+            attrs['class'] = field_class
+        return formfield
 
     def _declared_fieldsets(self):
         if self.fieldsets:
Index: django/contrib/admin/widgets.py
===================================================================
--- django/contrib/admin/widgets.py	(revision 6843)
+++ django/contrib/admin/widgets.py	(working copy)
@@ -37,7 +37,7 @@
               settings.ADMIN_MEDIA_PREFIX + "js/admin/DateTimeShortcuts.js")
         
     def __init__(self, attrs={}):
-        super(AdminDateWidget, self).__init__(attrs={'class': 'vDateField', 'size': '10'})
+        super(AdminDateWidget, self).__init__(attrs={'class': 'vDateField', 'size': '10', 'maxlength': '10'})
 
 class AdminTimeWidget(forms.TextInput):
     class Media:
@@ -45,7 +45,7 @@
               settings.ADMIN_MEDIA_PREFIX + "js/admin/DateTimeShortcuts.js")
 
     def __init__(self, attrs={}):
-        super(AdminTimeWidget, self).__init__(attrs={'class': 'vTimeField', 'size': '8'})
+        super(AdminTimeWidget, self).__init__(attrs={'class': 'vTimeField', 'size': '8', 'maxlength': '8'})
     
 class AdminSplitDateTime(forms.SplitDateTimeWidget):
     """
