【问题标题】:jquery multiple autocomplete with jsonjquery多个自动完成与json
【发布时间】:2013-01-06 04:13:13
【问题描述】:

我正在处理 jquery 多个自动完成功能,但是,当我输入内容时,所有项目都会发布,而不是匹配的项目。我的 Javascript 是

$('.tags').bind("keydown", function(event) {
if (event.keyCode === $.ui.keyCode.TAB && $(this).data("autocomplete").menu.active) {
    event.preventDefault();
    }
}).autocomplete({
    source : function(request, response) {
        $.getJSON($.cookie('base_url') + "js/getaddressbook.php", {
            term : extractLast(request.term)
        }, response);
    },
    search : function() {
        var term = extractLast(this.value);
        if (term.length < 2) {
            return false;
        }
    },

    focus : function() {
        return false;
    },
    select : function(event, ui) {
        var terms = split(this.value);
        terms.pop();
        terms.push(ui.item.value);
        terms.push("");
        this.value = terms.join("; ");
        return false;
    }
});

js/getaddressbook.php 返回

["gunjan.soni","askhr","saurabh.burman","Aditi.Nehra","ithelpdesk","shipra.kwatra","gagandeep.manchanda"]

不知道我哪里出错了。

下面是截图

请帮忙!

我的JS控制器有这个功能

Public function getaddressbook() {
        $this -> load -> model('common_model');
        $data = $this -> common_model -> addressbook();
        echo json_encode($data);
    }

而common_model有这个功能

Public function addressbook()
    {
        $this -> db -> select('emailid');
        $this -> db ->where('emailid <>','');
        $result = $this -> db -> get('addressbook');
        if ($result -> num_rows() > 0)
        {
            foreach ($result->result() as $row)
            {
                $data[] = $row -> emailid;
            }
            return ($data);
        }
        else
        {
            return FALSE;
        }
    }

【问题讨论】:

  • 似乎问题可能出在 getaddressbook.php 逻辑中。你能分享一些代码吗?
  • 对不起 Adunahay,我已经编辑了我的问题并将代码放入...
  • 没问题。我认为 mallix 的答案是在正确的轨道上!

标签: php jquery json autocomplete jquery-autocomplete


【解决方案1】:

您没有在控制器的任何地方传递 term

当然也可以使用该术语来查询您的数据库,例如:

$this->db->like('column_name', $term);  

对于您的代码,可能是:

Public function getaddressbook() {
        $this -> load -> model('common_model');
        $term = $this->input->get('term');
        $data = $this->common_model->addressbook($term);
        echo json_encode($data);
    }

Public function addressbook($term)
    {
        $this -> db -> select('emailid');
        $this -> db ->where('emailid <>','');
        $this->db->like('column_name', $term);
        $result = $this -> db -> get('addressbook');
        if ($result -> num_rows() > 0)
        {
            foreach ($result->result() as $row)
            {
                $data[] = $row -> emailid;
            }
            return ($data);
        }
        else
        {
            return FALSE;
        }
    }

【讨论】:

  • 如果它的帖子然后使用: $this-input->post('term');否则使用 $this->input->get('term')。取决于您的自动完成js。您的代码表示一个 get 方法,请参阅 $.getJSON
  • 嘿,谢谢 Mallix,这就像一个魅力。 :) 但是,我现在无法获得多个自动完成功能 :( 不确定我哪里出错了。
  • 我猜这是另一个问题。
  • 我猜 this.value = terms.join("; ") 有问题,因为我放了一个“,”,效果很好。
  • 哦,是的,我愿意!但是请 mallix 帮我做一件事,我怎样才能让它用分号而不是逗号来工作。
猜你喜欢
  • 2011-08-14
  • 2013-04-24
  • 2016-05-29
  • 2018-06-17
  • 1970-01-01
  • 2023-03-27
  • 2015-12-01
  • 2011-05-31
  • 2020-01-19
相关资源
最近更新 更多