【发布时间】:2012-12-27 05:56:54
【问题描述】:
为什么列表没有在我键入时自动更新?无论我输入什么列表都是一样的。
我希望能够输入“wj”,它只会列出以“wj”开头的项目。
JS
$(function()
{
$("#part_num_id").autocomplete({
source: "partnum/get"
});
});
控制器
public function get()
{
$q = $this->input->post('term', TRUE);
$this->load->model('partnum_model');
$this->partnum_model->get_partnum2($q);
}
型号
function get_partnum2($q)
{
$this->db->select('*');
$this->db->like('part_num', $q);
$query = $this->db->get('item_history');
if($query->num_rows > 0)
{
foreach ($query->result_array() as $row)
{
$new_row['label']=htmlentities(stripslashes($row['part_num']));
$new_row['value']=htmlentities(stripslashes($row['id']));
$row_set[] = $new_row; //build an array
}
echo json_encode($row_set);
}
}
【问题讨论】:
-
您的查询最终会是什么样子?似乎这就是这里的问题。
-
你试过
$this->db->like('part_num', $q);而不是$this->db->like('part_num', $q, 'after');吗? -
@user1190992 - 是的,谢谢你,谢谢你。这解决了它。但是方式?我从未见过查询中使用过“之后”。
-
before、after、both 和 none 指的是通配符 % 及其在查询中的位置。 mysql 中的 LIKE 需要通配符,否则找不到匹配项,寻找像 bre 这样的词是行不通的,像 bre% 一样。由于您只查找以您键入的字符开头的部件号,因此您只需将通配符放在您发送到查询的字符之后。
标签: jquery-ui codeigniter autocomplete