diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py
index 0a7b3cdb..87e5858e 100644
--- a/gluon/sqlhtml.py
+++ b/gluon/sqlhtml.py
@@ -1838,13 +1838,16 @@ class SQLFORM(FORM):
operators = SELECT(*[OPTION(T(option), _value=option) for option in options], _class='form-control')
_id = "%s_%s" % (value_id, name)
if field_type in ['boolean', 'double', 'time', 'integer']:
- value_input = SQLFORM.widgets[field_type].widget(field, field.default, _id=_id, _class='form-control')
+ widget_ = SQLFORM.widgets[field_type]
+ value_input = widget_.widget(field, field.default, _id=_id, _class=widget_._class + ' form-control')
elif field_type == 'date':
iso_format = {'_data-w2p_date_format' : '%Y-%m-%d'}
- value_input = SQLFORM.widgets.date.widget(field, field.default, _id=_id, _class='form-control', **iso_format)
+ widget_ = SQLFORM.widgets.date
+ value_input = widget_.widget(field, field.default, _id=_id, _class=widget_._class + ' form-control', **iso_format)
elif field_type == 'datetime':
iso_format = {'_data-w2p_datetime_format' : '%Y-%m-%d %H:%M:%S'}
- value_input = SQLFORM.widgets.datetime.widget(field, field.default, _id=_id, _class='form-control', **iso_format)
+ widget_ = SQLFORM.widgets.datetime
+ value_input = widget_.widget(field, field.default, _id=_id, _class=widget_._class + ' form-control', **iso_format)
elif (field_type.startswith('reference ') or
field_type.startswith('list:reference ')) and \
hasattr(field.requires, 'options'):
@@ -1856,7 +1859,8 @@ class SQLFORM(FORM):
elif field_type.startswith('reference ') or \
field_type.startswith('list:integer') or \
field_type.startswith('list:reference '):
- value_input = SQLFORM.widgets.integer.widget(field, field.default, _id=_id, _class='form-control')
+ widget_ = SQLFORM.widgets.integer
+ value_input = widget_.widget(field, field.default, _id=_id, _class=widget_._class + ' form-control')
else:
value_input = INPUT(
_type='text', _id=_id,