diff --git a/sources/renderer/bootstrap/fieldrenderer/bsselectobjectfieldrenderer.class.inc.php b/sources/renderer/bootstrap/fieldrenderer/bsselectobjectfieldrenderer.class.inc.php index 60a5964640..187ad326f1 100644 --- a/sources/renderer/bootstrap/fieldrenderer/bsselectobjectfieldrenderer.class.inc.php +++ b/sources/renderer/bootstrap/fieldrenderer/bsselectobjectfieldrenderer.class.inc.php @@ -78,7 +78,7 @@ class BsSelectObjectFieldRenderer extends FieldRenderer //$bRegularSelect = ($iSetCount <= $this->oField->GetMaximumComboLength()); $bRegularSelect = ( ($iSetCount <= $this->oField->GetMaximumComboLength()) || ($this->oField->GetSearchEndpoint() === null) || ($this->oField->GetSearchEndpoint() === '') ); unset($oCountSet); - + // - For regular select if ($bRegularSelect) { @@ -245,48 +245,54 @@ EOF } }); - $('#$sAutocompleteFieldId').typeahead({ - hint: true, - hightlight: true, - minLength: {$this->oField->GetMinAutoCompleteChars()} - },{ - name: '{$this->oField->GetId()}', - source: oAutocompleteSource_{$this->oField->GetId()}, - limit: 20, - display: 'name', - templates: { - suggestion: Handlebars.compile('
{{name}}
'), - pending: $("#page_overlay .content_loader").prop('outerHTML'), - notFound: '
{$sNoResultText}
' - } - }) - .off('typeahead:select').on('typeahead:select', function(oEvent, oSuggestion){ - $('#{$this->oField->GetGlobalId()}').val(oSuggestion.id); - // Triggering set_current_value event - var oValue = {}; - oValue[oSuggestion.id] = oSuggestion.name; - $("[data-field-id='{$this->oField->GetId()}'][data-form-path='{$this->oField->GetFormPath()}']").trigger('set_current_value', {value: oValue}); - }) - .off('typeahead:change').on('typeahead:change', function(oEvent, oSuggestion){ - // Checking if the value is a correct value. This is necessary because the user could empty the field / remove some chars and typeahead would not update the hidden input - var oDatums = oAutocompleteSource_{$this->oField->GetId()}.index.datums; - var bFound = false; - for(var i in oDatums) - { - if(oDatums[i].name == oSuggestion) - { - bFound = true; - $('#{$this->oField->GetGlobalId()}').val(oDatums[i].id); - break; + // This check is only for IE9... Otherwise the widget is duplicated on the field causing misbehaviour. + if($('#$sAutocompleteFieldId').typeahead('val') === undefined) + { + $('#$sAutocompleteFieldId').typeahead({ + hint: true, + hightlight: true, + minLength: {$this->oField->GetMinAutoCompleteChars()} + },{ + name: '{$this->oField->GetId()}', + source: oAutocompleteSource_{$this->oField->GetId()}, + limit: 20, + display: 'name', + templates: { + suggestion: Handlebars.compile('
{{name}}
'), + pending: $("#page_overlay .content_loader").prop('outerHTML'), + notFound: '
{$sNoResultText}
' } - } - // Emptying the fields if value is incorrect - if(!bFound) - { - $('#{$this->oField->GetGlobalId()}').val(0); - $('#{$sAutocompleteFieldId}').val(''); - } - }); + }) + .off('typeahead:select').on('typeahead:select', function(oEvent, oSuggestion){ + $('#{$this->oField->GetGlobalId()}').val(oSuggestion.id); + $('#{$sAutocompleteFieldId}').val(oSuggestion.name); + // Triggering set_current_value event + var oValue = {}; + oValue[oSuggestion.id] = oSuggestion.name; + $("[data-field-id='{$this->oField->GetId()}'][data-form-path='{$this->oField->GetFormPath()}']").trigger('set_current_value', {value: oValue}); + }) + .off('typeahead:change').on('typeahead:change', function(oEvent, oSuggestion){ + // Checking if the value is a correct value. This is necessary because the user could empty the field / remove some chars and typeahead would not update the hidden input + var oDatums = oAutocompleteSource_{$this->oField->GetId()}.index.datums; + var bFound = false; + for(var i in oDatums) + { + if(oDatums[i].name == oSuggestion) + { + bFound = true; + $('#{$this->oField->GetGlobalId()}').val(oDatums[i].id); + $('#{$sAutocompleteFieldId}').val(oDatums[i].name); + break; + } + } + // Emptying the fields if value is incorrect + if(!bFound) + { + $('#{$this->oField->GetGlobalId()}').val(0); + $('#{$sAutocompleteFieldId}').val(''); + } + }); + } EOF ); }