如何在自动完成的jQuery UI中实现价值?

时间:2018-10-04 15:01:03

标签: php jquery codeigniter

在我的user表中,我有id_username。我的自动完成功能仅按名称搜索。我需要id_user才能输入数据库。通常,我们可以在输入标签中将id_user编写为value属性。这是代码:

控制器:

function get_autocomplete(){
        if (isset($_GET['term'])) {
            $result = $this->User_model->search($_GET['term']);
            if (count($result) > 0) {
            foreach ($result as $row)
                $arr_result[] = $row->name;
                echo json_encode($arr_result);
            }
        }
    }

型号:

function search($name){
        $this->db->like('name', $name , 'both');
        $this->db->order_by('name', 'ASC');
        $this->db->limit(10);
        return $this->db->get('user')->result();
    }

查看:

<input type="text" id="name" placeholder="Name" name="id_user">
<script type="text/javascript">
        $(document).ready(function(){
            $( "#name" ).autocomplete({
              source: "<?php echo site_url('admin/user/get_autocomplete/?');?>"
            });
        });
    </script>

1 个答案:

答案 0 :(得分:0)

您可以使用标签/值对填充自动完成选项。 因此,这些选项会显示标签(例如username),并且当用户选择一个选项时,会将值(例如id_user)写入到输入字段(=值,并因此显示在输入字段中) )

因此您的php代码应返回一个带有标签/值对的JSON数组

foreach ($result as $row)
    $arr_result[] = array('label' => $row->name, 'value' => $row->id_user);
}
echo json_encode($arr_result);

请看一下我的jsfiddle示例-它显示了带有静态数据的自动完成功能 https://jsfiddle.net/jf7ynxwz/3/

如果您不喜欢将user_id写入到输入中(可见),则会更加复杂。看一下documentation并在选择之后将值设置为输入的data-html属性:-)