【问题标题】:Suggestions on the search filter关于搜索过滤器的建议
【发布时间】:2013-09-10 09:24:00
【问题描述】:

我正在使用 codeigniter 框架开发一个网站。我被困在需要实现自动完成功能的地方。我已经尝试了很多,但到目前为止我无法找到合适的解决方案。这是我的实际要求。

网站上有一个页面几乎没有搜索过滤器。当一个人登陆此页面时,该网站的所有用户都会显示在该页面上。真正的游戏从这里开始。有一个过滤器或输入框,可以根据名字或姓氏过滤掉结果。

假设我有一个数据库,其中有 3 个用户。

艾哈迈德·纳瓦兹 约翰·阿扎尔 莫妮卡芬莱

当一个人开始在该搜索框中输入“Ah”时,我希望开始出现显示他“Ahmad”的建议...请告诉我该怎么做?我在那里搜索了很多,但我找不到关于 codeignitor 的正确答案。这就是我的代码目前的样子...

<input type="text" placeholder="Persons Name" name="individual_name" id="individual_name">


<script>
$(function() {
$( "#individual_name" ).autocomplete({
source: ('autocomplete_individual_name'),
select: function () {
testing()
}
});
});
</script>

就在我编写脚本的输入下方....它转到我提到的控制器。这是控制器的样子...

$individual_name = $this->input->post('individual_name');
$where = "first_name LIKE '".$individual_name."%' OR last_name LIKE '".$individual_name."%'";
$users_array = $this->user_profile_model->findByCondition($where);

第一个问题 $individual_name 没有被填充。

第二个问题 当我在 users_array 中收到结果时,接下来我应该做什么?如何将其传回以显示建议?

第三个问题 我用来调用过滤函数onkeyup()。现在当一个人通过建议选择如何调用过滤器?

PS->还请让我知道我该如何回复在这个问题上回复我的人......我已经使用@符号与用户但似乎他们没有得到我的回复,这就是他们从未返回的原因...... .

任何帮助都将非常感激......

感谢等待 艾哈迈德

【问题讨论】:

    标签: php codeigniter autocomplete autosuggest


    【解决方案1】:

    试试这样,您可能需要稍微更改代码以适合您,

    在你的脚本部分:

    $("#individual_name").autocomplete({
        source         : base_url+"controller_name/suggest_names",
        minLength      : 1,
        select: function( event, ui ) {
            alert('id :'+ui.item.value) ;
            //document.location.href  = base_url+"controller_name/search?keyword="+ui.item.value; do something or redirect
        },
        success : function(resp){
            //alert("auto");
        },
        error : function(){
            alert("Oops, that didn't work. Please try again.");
    
        }
    });
    

    在您的控制器中:

    function suggest_names(){
        print_r ( $this->model_name->suggest_names($_REQUEST['term']) );
    }
    

    在你的模型部分:

    function suggest_names($term){
        $data   = array();
        $term   = strtolower( addslashes( trim( urldecode($term) ) ) );
        $temp   = $this->db->select('name as label, id as value')->like('name', $term, 'LEFT')->get('table_name')->result_array();
        $data   = json_encode($temp);
        //echo "<pre>";print_r($data);echo "</pre>";die;
        return $data;
    }
    

    如果您遇到任何问题,请告诉我。希望它对你有用。

    【讨论】:

    • 完美运行...但我有一个小问题。我使用了 ajax 的 keyup 函数来根据输入更新结果。但是在我们刚刚制定的这些建议中,当您使用鼠标选择任何内容时,它不会更新结果。那就是它不会调用该函数,因为它是在“key up”时调用的......当一个人用鼠标点击一个建议时如何调用它?
    • 您不会在keyup event 上更新,而是查看它在哪里提醒alert('id :'+ui.item.value) ;。这是这里的选择事件更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多