diff --git a/machines/templatetags/bootstrap_form_typeahead.py b/machines/templatetags/bootstrap_form_typeahead.py index 9b38b528..528bd767 100644 --- a/machines/templatetags/bootstrap_form_typeahead.py +++ b/machines/templatetags/bootstrap_form_typeahead.py @@ -20,6 +20,7 @@ from django import template from django.utils.safestring import mark_safe +from django.forms import TextInput from bootstrap3.templatetags.bootstrap3 import bootstrap_form from bootstrap3.utils import render_tag from bootstrap3.forms import render_field @@ -67,18 +68,24 @@ def bootstrap_form_typeahead(django_form, typeahead_fields, *args, **kwargs): form = '' for f_name, f_value in django_form.fields.items() : if not f_name in exclude : - if f_name in t_fields : - if not f_name in hidden : + if f_name in t_fields and not f_name in hidden : + f_bound = f_value.get_bound_field( django_form, f_name ) + f_value.widget = TextInput( + attrs={ + 'name': 'typeahead_'+f_name, + } + ) + form += render_field( + f_value.get_bound_field( django_form, f_name ), + *args, + **kwargs + ) form += render_tag( 'div', attrs = {'class': 'form-group'}, - content = label_tag( f_name, f_value ) + - input_tag( f_name, f_value ) + - hidden_tag( f_name ) + + content = hidden_tag( f_bound, f_name ) + typeahead_full_script( f_name, f_value ) ) - else: - form += hidden_tag( f_name ) else: form += render_field( f_value.get_bound_field(django_form, f_name), @@ -89,45 +96,23 @@ def bootstrap_form_typeahead(django_form, typeahead_fields, *args, **kwargs): return mark_safe( form ) -def input_id( f_name ): - return 'typeahead_input_'+f_name +def input_id( f_name ) : + return 'id_'+f_name def hidden_id( f_name ): - return 'typeahead_select_'+f_name + return 'typeahead_hidden_'+f_name def hidden_tag( f_name ): return render_tag( 'input', attrs={ 'id': hidden_id(f_name), - 'maxlength': 255, 'name': f_name, 'type': 'hidden', 'value': '' } ) -def label_tag( f_name, f_value ): - return render_tag( - 'label', - attrs={ - 'class': 'control-label', - 'for': input_id(f_name) - }, - content=f_value.label - ) - -def input_tag( f_name, f_value ): - return render_tag( - 'input', - attrs={ - 'class': 'form-control', - 'id': input_id(f_name), - 'type': 'text', - 'placeholder': f_value.empty_label - }, - ) - def typeahead_full_script( f_name, f_value ) : js_content = \ '$("#'+input_id(f_name)+'").ready( function() {\n' + \