在codeigniter中匹配后自动完成擦除不起作用

时间:2017-06-21 14:55:44

标签: php codeigniter autocomplete

我正在使用自动完成功能来完成我的项目,它可以正常显示下面的图像。

enter image description here

但是当我输入更多字母到文本框时,结果仍然如下图所示。

enter image description here

所以如何删除它,结果应该显示匹配的数据。我的视图文件是

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-autocomplete/1.0.7/jquery.auto-complete.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
<!-- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> -->
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/jquery-ui.min.js"></script>
<input class="form-control ui-autocomplete-input" name="src" id="src" type="text" value="<?if (!empty($rule_info['src'])) {echo $rule_info['src'];} else{ echo 'any';}?>" pattern="[a-zA-Z0-9_.:]+" placeholder="Source Address" <?if (!empty($rule_info['src'])) {} else{ echo 'disabled';}?> autocomplete="off">
$(function() {
    $( "#dst" ).autocomplete({ //the recipient text field with id #username
        source: function( request, response ) {
            $.ajax({
                url: "<?php echo base_url();?>rule/search_alias_for_rule",
                dataType: "json",
                data: request,
                error: function(xhr, status, error) {
                  var err = eval("(" + xhr.responseText + ")");
                  alert(err.Message);
                },
                success: function(data){
                    if(data.response == 'true') {
                       response(data.message);
                    }
                }
            });
        }
    });
});

然后控制器功能是。

 public function search_alias_for_rule(){

    $username = trim($this->input->get('term', TRUE)); //get term parameter sent via text field. Not sure how secure get() is

    $this->db->select('name');
    $this->db->from('alias');
    $this->db->like('name', $username);
    $this->db->limit('5');
    $query = $this->db->get();

    if ($query->num_rows() > 0)
    {
        $data['response'] = 'true'; //If username exists set true
        $data['message'] = array();

        foreach ($query->result() as $row)
        {
            $data['message'][] = array(
                'label' => $row->name,
                'value' => $row->name
            );
        }
    }
    else
    {
        $data['response'] = 'false'; //Set false if user not valid
    }

    echo json_encode($data);
}

我该怎么做?请帮帮我。

3 个答案:

答案 0 :(得分:0)

尝试设置$ .ajax函数中的方法类型和数据:

$(function() {
    $( "#dst" ).autocomplete({ //the recipient text field with id #username
        source: function( request, response ) {
            $.ajax({
                type: 'GET',
                data: {
                    term: request.term
                },
                url: "<?php echo base_url();?>rule/search_alias_for_rule",
                dataType: "json",
                error: function(xhr, status, error) {
                  var err = eval("(" + xhr.responseText + ")");
                  alert(err.Message);
                },
                success: function(data){
                    if(data.response == 'true') {
                       response(data.message);
                    }
                }
            });
        }
    });
});

答案 1 :(得分:0)

默认情况下,Inheritance运算符类似于:

like

对你而言,上述情况正在发挥作用。

试试这个代码段:

$this->db->like('title', 'match');
// Produces: WHERE `title` LIKE '%match%' ESCAPE '!'  

点击documentation

答案 2 :(得分:0)

现在已经完成了在ajax中更改成功功能。

success: function(data){
   if(data.response == 'true') {
      response(data.message);
   }
   else{
      response(data.message).remove();
   }
}