【问题标题】:how to create custom autocomplete textfield in yii如何在 yii 中创建自定义自动完成文本字段
【发布时间】:2012-12-21 06:48:40
【问题描述】:

我是 yii 的新手。我需要编写自定义 yii 自动完成。我知道 CJuiAutocomplete 在那里。但我需要实现自己的自定义自动完成。任何人都可以指导我或帮助我开发自定义自动完成文本字段。在文本字段中显示名称时获取 id。

提前致谢

【问题讨论】:

  • CJuiAutocomplete 出了什么问题?这是完全可定制的。
  • 虽然很好..我无法让它工作..这是我的旧链接(yiiframework.com/forum/index.php/topic/… ..但是为了更广泛的搜索,我需要自定义一个以保持视图性能问题

标签: php jquery ajax autocomplete yii


【解决方案1】:

这是站点控制器中的一个操作...

public function actionAutoComplete($term){

    $query = Yourmodel::model()->findallbyattributes( array('somecolumn'=>$term));
    $list = array();        
    foreach($query as $q){
        $data['value']= $q['id'];
        $data['label']= $q['name'];

        $list[]= $data;
        unset($data);
    }

    echo json_encode($list);
}

您认为这是一个搜索表单:

$form=$this->beginWidget('CActiveForm', array(
'id'=>'searchform',
'enableAjaxValidation'=>false,
'action' => '/'
)); ?>

    <fieldset>
        <div class="input-append">
        <?php

        echo CHtml::hiddenField('selectedvalue','');

         $this->widget('zii.widgets.jui.CJuiAutoComplete', array(
            'name'=>'searchbox',
            'value'=>'',
            'source'=>CController::createUrl('/site/autoComplete'),
            'options'=>array(
            'showAnim'=>'fold',         
            'minLength'=>'2',
            'select'=>'js:function( event, ui ) {
                        $("#searchbox").val( ui.item.label );
                        $("#selectedvalue").val( ui.item.value );
                        return false;
                  }',
            ),
            'htmlOptions'=>array(
            'onfocus' => 'js: this.value = null; $("#searchbox").val(null); $("#selectedvalue").val(null);',
            'class' => 'input-xxlarge search-query',
            'placeholder' => "Search...",
            ),
            ));
            echo '<button class="btn" type="submit">Submit</button>';   

        ?>
        </div>
    </fieldset>

<?php $this->endWidget(); ?>    
</form>

【讨论】:

  • 这显示 [] ... 为什么?有什么遗漏吗??请回复
【解决方案2】:

因为这个条件

array('somecolumn'=>$term)

只有当你写完整的字符串时它才会显示结果。例如,您有 ['coffee', 'cake']。当您在搜索框中输入时,它不会显示 coff、cof、co、ca、cak 等的结果。只有当您输入全字咖啡时才会显示结果,您会得到 ['coffee'] 作为结果。

所以你需要这样的东西:

$match = $_GET['term'];
$tags = Tags::model()->findAll(
   'tag_name LIKE :match',
   array(':match' => "%$match%")
);

这将显示 coff、cof、co、ca、cak 等的结果。

【讨论】:

    猜你喜欢
    • 2018-11-02
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 2010-10-15
    相关资源
    最近更新 更多