Yii CJuiAutoComplete在表格而不是下拉列表中显示结果

时间:2014-12-20 07:04:15

标签: php yii

我有CJuiAutoComplete小部件工作正常,从表中获取数据并在下拉列表中显示 但是我希望将搜索到的数据显示在CJuiAutoComplete中。并为搜索的值填充/创建行。

我该怎么做?我搜索了很多,但我没有得到任何解决方案。

查看 -

<?php
        $this->widget('zii.widgets.jui.CJuiAutoComplete', array(
            'id' => 'searchContact',
            'name' => 'search_contact',
            'source' => $this->createUrl('user/searchContact'),
            'options' => array(
                'showAnim' => 'fold',
            ),
            'htmlOptions' => array(
                'size' => '40',
                'class' => 'form-control',
                'placeholder' => 'Search E-mail contacts',
            ),
        ));
        ?>`

动作 -

public function actionSearchContact() {
    $searchResult = array();
    $user_id = Yii::app()->user->getId();
    $term = trim($_GET['term']);
    if ($term) {
        $term = '%' . $term . '%';
        $contacts = Contact::model()->findAll('email LIKE :email AND user_id = :user_id', array(
            ':email' => $term,
            'user_id' => $user_id,
        ));
        foreach ($contacts as $contact) {
            $searchResult[] = array(
                'label' => $contact->email, // label for dropdown list          
                'value' => $contact->email, // value for input field          
                'user_id' => $contact->user_id, // return value from autocomplete
            );
        }
        echo CJSON::encode($searchResult);
    }
    Yii::app()->end();
}

2 个答案:

答案 0 :(得分:2)

真正的解决方案:

因此,如果你真的愿意使用CJuiAutocomplete来做,那么你需要解决扩展问题,根据你的需要进行自定义,默认情况下只需要一个下拉列表。

以下是清楚解释和定义如何操作的链接。

Custom AutoComplete

<强>替代:

您可以在文本字段中添加onkeypress事件,在其上触发ajax请求,根据需要在ajax网址中准备结果并显示它。这将非常简单,并且可以节省定制CJuiAutocomplete扩展的开销。当然,这两种方法都需要相似的时间。

答案 1 :(得分:0)

[] [1] http://api.jqueryui.com/autocomplete/#event-change发现CJuiAutoComplete封装了JUI自动完成插件。

你可以在选项字段中使用它的事件..所以你可以使用[Link] [1]

中声明的所有事件

[1]:http://www.yiiframework.com/doc/api/1.1/CJuiAutoComplete&#34; Link&#34;你只需要在

下使用它
 'options' => array(
            'showAnim' => 'fold',
        ),

数组..你可以使用

 change: function( event, ui ) {}

完成任务。或者相同的人做你的事......