【问题标题】:Cannot autocomplete other textfields using CJuiAutoComplete无法使用 CJuiAutoComplete 自动完成其他文本字段
【发布时间】:2017-12-16 20:15:03
【问题描述】:

我有一个模型,其中包含 id_pegnama_pegjabatan_peg 字段。所以这就是我想做的:

  1. 在我在文本字段id_peg 中键入时显示id_peg 列表的自动建议
  2. 当我选择建议的 id_peg 时,nama_pegjabatan_peg 字段会根据相应的选定值自动完成(从数据库中检索)

我一直在尝试做第一个,我做到了。但我被第二个卡住了。

这就是我所做的:

查看/melaporkan.php:

              $this->widget('zii.widgets.jui.CJuiAutoComplete', array(
                    'name' => 'test1',
                    'source' => $this->createUrl('search'),
                    // additional javascript options for the autocomplete plugin
                    'options' => array(
                        'showAnim' => 'fold',
                        'select' => 'js:function(event, ui) {  
                              $('#nama_peg').val(ui.item.nama_peg);
                              $('#jabatan_peg').val(ui.item.jabatan_peg); 
                        }',
                    ),                            
                ));

控制器/sitecontroller.php

public function actionSearch() {
    $res = array(0 => array('id' => 1, 'value' => "id_peg"), 1 => array('id' => 2, 'value' => "jabatan_peg"), 2 => array('id' => 2, 'value' => "nama_peg"));
    if (isset($_GET['term'])) {
        $qtxt = "SELECT id_peg FROM pegawai WHERE id_peg LIKE :id_peg";
        $command = Yii::app()->db->createCommand($qtxt);
        $command->bindValue(":id_peg", '%' . $_GET['term'] . '%', PDO::PARAM_STR);
        $res = $command->queryColumn();

    }
    echo CJSON::encode($res);
    Yii::app()->end();
}

它所做的只是自动建议id_peg。当点击一些随机的id_pegnama_pegjabatan_peg仍然是空的。

我做错了什么?

【问题讨论】:

    标签: php autocomplete yii2 yii-extensions


    【解决方案1】:

    其实问题出在controllers/sitecontroller.php 页面。 您仅以 JSON 格式发送 id_peg,但尝试以 ui.item.jabatan_peg 格式发送。

    将您的价值发送为 [{"id":"Caprimulgus europaeus","value":"European Nightjar"}] 模式 并在您的选择函数中获取值 ui.item.value。

    【讨论】:

    • 对不起,我不明白这个:[{"id":"Caprimulgus europaeus","value":"European Nightjar"}]。你能详细说明一下吗?
    • 回显 CJSON::encode($res);此代码正在生成类似于 [{"value1","value2"}] 的 JSON 格式,但您想访问 ui.item.jabatan_peg 尝试首先创建一个数组 array( 0=>array( 'id' = 1, ' value'=> "value1" ), 1=>array( 'id' = 2, 'value'=> "value2" ), ) 然后 $('#jabatan_peg').val(ui.item.value);你会得到满意的结果
    • 我已经更新了帖子。我照你说的做了。它仍然不起作用。我做错了吗?
    • 更新你的ajax页面 public function actionSearch() { $res = array(); if (isset($_GET['term'])) { $qtxt = "SELECT id_peg FROM pegawai WHERE id_peg LIKE :id_peg"; $command = Yii::app()->db->createCommand($qtxt); $command->bindValue(":id_peg", '%' . $_GET['term'] . '%', PDO::PARAM_STR); $res = $command->queryColumn(); } $i =0; foreach($res as $model) { $i++; $suggest[] = array('label'=> $i 'jabatan_peg'=>$model, ) echo CJSON::encode($suggest); Yii::app()->end(); }
    猜你喜欢
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 2014-09-03
    相关资源
    最近更新 更多