在我的user
表中,我有id_user
和name
。我的自动完成功能仅按名称搜索。我需要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>
答案 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属性:-)