Php yii中创建方法中CActiveForm上的Cjuiautocomplete

Php yii中创建方法中CActiveForm上的Cjuiautocomplete,php,jquery,yii,autocomplete,Php,Jquery,Yii,Autocomplete,简要说明我要做的事情。我正在尝试在create表单中实现自动完成。我知道这看起来很奇怪,但正在添加的表格是一份离职人员名单。因此,我的自动完成在用户表上查找用户名,我的actionCreate可以使用最后一个,第一个来查找用户id并将其添加到表中。这一切都很好。我可以看到自动完成。问题是: 当我键入部分名称时,会弹出名称列表,但我无法从中进行选择。每当我将鼠标移到下拉列表上时,列表就会消失,当我按下时,同样的事情也会发生 这是表格的代码。我已经尝试了多种不同的实现自动完成的方法,到目前为止,这一

简要说明我要做的事情。我正在尝试在create表单中实现自动完成。我知道这看起来很奇怪,但正在添加的表格是一份离职人员名单。因此,我的自动完成在用户表上查找用户名,我的actionCreate可以使用最后一个,第一个来查找用户id并将其添加到表中。这一切都很好。我可以看到自动完成。问题是:

当我键入部分名称时,会弹出名称列表,但我无法从中进行选择。每当我将鼠标移到下拉列表上时,列表就会消失,当我按下时,同样的事情也会发生

这是表格的代码。我已经尝试了多种不同的实现自动完成的方法,到目前为止,这一种效果最好,我只是无法让自动完成填充字段

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'away-mentor-form',
    'enableAjaxValidation'=>true,
)); ?>

<p class="note">Fields with <span class="required">*</span> are required.</p>

<?php echo $form->errorSummary($model); ?>

<div class="row">
    <?php echo "Last-Name, First-Name"; ?><br/>

    <?php
    $this->widget('zii.widgets.jui.CJuiAutoComplete', array(
        'name'=>'name_search',
        'value'=>$model->name_search,

        'source'=>Yii::app()->createUrl('/AwayMentor/FindUserName'),// <- path to controller which returns dynamic data
        // additional javascript options for the autocomplete plugin
        'options'=>array(
            'minLength'=>'1', // min chars to start search
            'select'=>'js:function(event, ui) { console.log(ui.item.id +":"+ui.item.value); }'
        ),
        'htmlOptions'=>array(
            'id'=>'name_search',
            'rel'=>'val',
        ),
    ));
    echo $form->error($model,'name_search'); ?>
</div>


<div class="row buttons">
    <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
</div>

<?php $this->endWidget(); ?>
尝试以下方法:-

     <?php

    $this->widget('zii.widgets.jui.CJuiAutoComplete', array(
        'name' => 'name_search',
        'value' => $model->name_search,
        'source' => Yii::app()->createUrl('/AwayMentor/FindUserName'), // <- path to controller which returns dynamic data
        // additional javascript options for the autocomplete plugin
        'options' => array(
            'minLength' => '1', // min chars to start search
            'select' => "js: function(event, data) {
                                                $('#name_search').val(data.item.value);
                                                $(this).data('id',data.item.id); 
                                                return false;
                                                            }",
            'focus' => "js: function(event,data){
                                                    $(this).val(data.item.value);  
                                                    return false;
                                                        }"
        ),
        'htmlOptions' => array(
            'id' => 'name_search',
            'rel' => 'val',
        ),
    ));
    echo $form->error($model, 'name_search');


  Yii::app()->clientScript->registerScript('autocomplete', "
  jQuery('#name_search').data('autocomplete')._renderItem = function( ul, item ) {
    return $('<li></li>')
      .data('item.autocomplete', item)
      .append('<a>' + item.value + '<br><i>' + item.id + '</i></a>')
      .appendTo(ul);
  };",
  CClientScript::POS_READY
);
?>

Yii::app->createUrl'/AwayMentor/FindUserName'的输出是什么?表用户的名称。用户模型有一个函数,它返回最后一个,第一个从查找用户名的表中返回,但仍然执行相同的操作。您的代码在“自动完成”下拉列表中将用户名添加到名称的末尾,但在悬停/按下时,用户名仍然会消失。。。。。aaaaa nnnddd我刚修好。里面有一些代码是由yii或。。。$this->endwidget;经过几天的努力,我才注意到这一点。只是把它注释掉了,现在它工作得很好。没关系,它没修好,它坏了,我没有刷新页面。我添加了一个部分工作的代码填充,但我无法从中获取数据,从而添加了另一个字段框,现在顶部框工作正常。我很困惑。好吧,我想我终于解决了它,添加了$name_search.autocomplete{source:'./FindUserName'};在endwidget之后;?>现在,我可以从下拉栏中选择您的代码。非常感谢你。