【发布时间】:2012-12-05 14:31:39
【问题描述】:
我正在通过在自动完成文本字段中显示名称并存储隐藏字段 id 值来寻找自动完成功能。
当我检查网络时,我得到了名称和 ID。但能够显示名称但它没有选择记录的 ID,因此无法存储 ID
任何人都可以给我任何用于自动完成的链接/代码。请问有没有可用的链接/代码..
自动完成类:::
class EAutoCompleteAction extends CAction{
public $model;
public $attribute;
public $id;
private $results = array();
public $returnVal = '';
public function run()
{
if(isset($this->model) && isset($this->attribute)) {
$criteria = new CDbCriteria();
$criteria->compare($this->attribute, $_GET['term'], true);
$model = new $this->model;
foreach($model->findAll($criteria) as $m)
{
$this->results[] = $m->{$this->attribute};
$this->results[] = $m->{$this->id};
//$this->results[] = array(
// 'name' => $m->{$this->attribute},
// 'id'=> $m->id
//);
}
}
echo CJSON::encode($this->results);
}
}
我正在使用这样的控制器/动作::
public function actions()
{
return array(
'aclist'=>array(
'class'=>'application.extensions.EAutoCompleteAction',
'model'=>'Organisation', //My model's class name
'attribute'=>'name', //The attribute of the model i will search
)
}
在我看来是 form.php。
<div class="row">
<?php echo $form->labelEx($model,'organsiation'); ?>
<?php echo $form->hiddenField($model,'organisation_id',array()); ?>
<?php
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
'attribute'=>'organisation_id',
'model'=>$model,
'sourceUrl'=>array('benefit/aclist'),
'value'=>'Please select',
'name'=>'name',
'id'=>'organisation_id',
'options'=>array(
'minLength'=>'2',
'select'=>"js:function(event, ui) {
alert(ui.item.id);
$('#organisation_id').val(ui.item.id);
}",
),
'htmlOptions'=>array(
'size'=>45,
'maxlength'=>45,
),
)); ?>
<?php echo $form->error($model,'organisation_id'); ?>
【问题讨论】:
-
你在 alert(ui.item.id) 中得到了什么; ??尝试调查 console.log 中的“ui”对象。
-
没有..我也没有得到任何 id..但是当我在 chrome inspector/networks/response 中检查时我得到了值和 id..
-
那么你得到“ui.item”对象了吗?
-
您得到的响应是 JSON。对吗?
-
是的..得到杰森的回应。但我不明白 ui.item。 Itried 数组 respose 以及使用 name1|id1,name2|id2,name3|id3....... 格式。我在 chrome/networks/response 中获得了这些值格式,但它也没有在 textfield nt 中选择 id,。
标签: autocomplete yii