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