php - Yii 中的多个 CJuiAutocomplete - 项目不呈现

标签 php jquery autocomplete yii itemrenderer

我的 View 页面上需要两个 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 );
    };');
?>

最佳答案

进行了如此多的搜索,在 SO 上询问之后我就找到了它,呵呵。 registerScript 方法中的答案很简单 - 第一个参数是脚本的唯一 ID。 id 两次都相同,所以它覆盖了前一个。谢谢。

关于php - Yii 中的多个 CJuiAutocomplete - 项目不呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15567762/

相关文章:

php - Composer 安装 Magento 2 作为开发依赖

javascript - 如何在 Bootstrap 列中将星级评分图像水平居中?

php - 删除自动完成中的重复结果

autocomplete - Kendo UI AutoComplete数据源传输仅读取一次

php - fatal error : Allowed memory size of 33554432 bytes exhausted - Laravel 8

php - 如何在 laravel 的链接按钮中隐藏 URL

jquery - 改变所有其他元素的背景颜色

javascript - 有没有办法在使用 Enter 键提交表单时隐藏 native 浏览器表单输入自动完成功能

PHP Seo 友好 URL

javascript - 如何将字符串数组相应地分配给子元素?