【问题标题】:Yii CJuiAutoComplete display result in table instead of dropdownYii CJuiAutoComplete 以表格形式而不是下拉菜单显示结果
【发布时间】:2014-12-20 07:04:15
【问题描述】:

我的 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();
}

【问题讨论】:

  • 使用javascript ajax调用吗??得到结果,定制它并显示..
  • @saveATcode 请您提供一些示例代码或链接,关于在 CJuiAutocomplete 中放置 ajax 调用的位置
  • 我的意思是删除 CJuiAutocomplete 并完全自定义,例如获取一个文本字段,向其添加 onkeypress 事件,对其触发 ajax 请求,获取结果,自定义并显示。跨度>
  • 哦,那是另一种简单的方法..谢谢...我只是想用 CJuiAutocomplete 来做..我也会试试你的方法

标签: php yii


【解决方案1】:

真正的解决方案:

因此,如果您真的愿意使用 CJuiAutocomplete 进行操作,那么您需要解决扩展问题,根据您的需要对其进行自定义,因为默认情况下它只是一个下拉列表。

这是一个明确解释并定义如何操作的链接。

Custom AutoComplete

替代方案:

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

【讨论】:

    【解决方案2】:

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

    并且您可以在选项字段中使用它的事件.. 这样您就可以使用在 [Link][1] 中声明的所有事件

    [1]:http://www.yiiframework.com/doc/api/1.1/CJuiAutoComplete“链接”你只需要在下使用即可

     'options' => array(
                'showAnim' => 'fold',
            ),
    

    数组..你可以使用

     change: function( event, ui ) {}
    

    把事情做好。或等价的人来做你的事......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 2022-01-04
      • 2021-12-08
      相关资源
      最近更新 更多