0

我在我的表单中给出了一个 CAutoComplete 字段,它根据我的查询提出建议,现在我需要的是,在从建议框中选择一个项目后,如果我放一个逗号并寻求另一个项目建议,那么建议工作正常根据我已经这样编码,但是选择项目正在删除该字段中选择的第一个项目并取而代之。我想要的是,这些项目应该留在那里作为该字段的输入。

在此处输入图像描述

在第一次选择字段包含诺基亚 100 之后。现在,如果我输入一个“,”并再次输入一些内容,那么就会出现建议,我也可以从中选择..

在此处输入图像描述

选择新产品将删除以前的产品。获取方式如下:Nokiaa 100、Micromax...、...输入框。这是我的代码

<?php $this->widget('CAutoComplete', array(
                            'name'=>'ListModel[indexIds]',
                            'id'=>'input-box',
                            'attribute'=>'search',
                            'url'=> $this->createAbsoluteUrl('list/suggestions'),
                            'value'=>'',
                            'minChars'=>2,
                            'scroll'=>false,
                            'resultsClass'=>'searchAutoComplete ac_results',
                            'htmlOptions'=> array('class'=>"searchClickClear",'id'=>'select'),
                            'methodChain'=>'.result(function(){$("form#search-form").submit();})'
               )); ?>

这是输入字段

公共功能 actionSuggestions() {

        if(isset($_GET['q']) && ($keyword=trim($_GET['q']))!=='')
        {
            $what = $_GET['q'];
            $what = explode(',', $what);
            if(is_array($what))
                $what = end($what);
            $criteria = new CDbCriteria;
            $criteria->select = array("product_name");
            $criteria->condition = "product_name LIKE '%{$what}%' AND tagged = 1";
            $criteria->group = "product_name";
            $products = Production::model()->findAll($criteria);
            $result = array();

            if(count($products) > 0)
            {
                foreach($products as $p)
                    $result[] = $p->product_name;

                echo implode("\n",$result);
            }
        }
    }

这是建议部分。

4

1 回答 1

0

默认的 CAutoComplete 目前无法处理此问题,但有一个扩展将其行为扩展为 CJuiAutotComplete 的包装器。它的工作方式类似于 jQuery UI 多标记演示。

通过在谷歌中输入你的问题找到了这个,第一个答案就是这个。

于 2013-02-21T07:24:03.523 回答