2013-03-22 54 views
3

我的視圖頁面上需要兩個CJuiAutocomplete項目。不幸的是 - 其中只有一個正確渲染項目。另一個 - 呈現空行。我檢查了螢火蟲,並從數據庫中正確地檢索了這些值。實際上,如果我更改registerScript的順序 - 只有最後registerScript的自動完成功能才能正確呈現項目。Yii中的多個CJuiAutocomplete - 不渲染的項目

這裏是我的代碼:要求在這裏,所以我覺得嘿嘿後

<?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); 
    };'); 
?> 

回答

2

這麼多的搜索和權利。 答案在方法registerScript中很簡單 - 第一個參數是腳本的唯一標識。這個id在兩次都是一樣的,所以它覆蓋了前一個。謝謝。