Мне нужно два элемента CJuiAutocomplete на моей странице просмотра. К сожалению – только один из них правильно обрабатывает элементы. Другой – отображает пустые строки. Я проверил в firebug, и значения извлекаются из базы данных должным образом. На самом деле, если я изменяю порядок registerScript
– только автозаполнение из последнего registerScript
правильно отображает элементы.
Вот мой код:
<?php $this->widget('zii.widgets.jui.CJuiAutoComplete', array( 'name' => 'autocities', 'sourceUrl'=>$this->createUrl('projects/dynamicGetCities'), 'options' => array( 'minLength' => 2, 'select' => "js: function(event, ui) { $('#lastSelectedCityId').val(ui.item.idCity); var ciname = ui.item.name + ' (' + ui.item.directional + ')'; $('.selectedCity').html(ciname); } " ), )); ?> <br/><br/> <?php $this->widget('zii.widgets.jui.CJuiAutoComplete', array( 'name' => 'autostreets', 'sourceUrl' => 'js: function(request, response) { $.ajax({ url: "'.$this->createUrl('projects/dynamicGetStreets').'", dataType: "json", data: { term: request.term, idCity: $("#lastSelectedCityId").val() }, success: function (data) { response(data); } })}', 'options' => array( 'minLength' => 2, 'select' => "js: function(event, ui) { $('#lastSelectedStreetId').val(ui.item.idStreet); $('.selectedStreet').html(ui.item.name); }" ), )); Yii::app()->clientScript->registerScript('input', ' $("#autostreets").data("autocomplete")._renderItem = function( ul, item ) { return $( "<li></li>" ) .data( "item.autocomplete", item ) .append( "<a>"+item.name+"<br/><span style=\"font-size: 9px;\">Abonentów: "+item.customCount+"</span></a>") .appendTo( ul ); };'); Yii::app()->clientScript->registerScript('input', ' $("#autocities").data("autocomplete")._renderItem = function( ul, item ) { return $( "<li></li>" ) .data( "item.autocomplete", item ) .append( "<a>"+item.name + " - " + item.directional+"<br/><span style=\"font-size: 9px;\">Abonentów: "+item.customCount+"</span></a>") .appendTo( ul ); };'); ?>
Так много поисков и сразу после того, как я спросил здесь, я нашел это хе. Ответ прост в методе registerScript
– первый параметр является уникальным идентификатором скрипта. Идентификатор был тем же самым оба раза, поэтому он переопределял предыдущий. Благодарю.