0

我有一个包含 3 个字段的表单,每个字段我都想使用 jquery 自动完成功能为我自动完成所有这些字段。所以我写了这段代码

html

<input type='text' class='completeme' name='name'/>
<input type='text' class='completeme' name='job'/>
<input type='text' class='completeme' name='lasname'/>

js

$('input.completeme').each(function() {
    $(this).autocomplete({
            source: function(request, response) {
                $.ajax({ url: '<?=base_url()?>patients/autocomplete',
                data: { 'term': this.value},
                dataType: "json",
                type: "POST",
                success: function(data){
                    response(data);
                }
            });
        },
        minLength: 2
});
});

并将两者都添加到视图中,并创建了一个名为 patients.php 的控制器,控制器自动完成

代码

function Autocomplete(){
$this->load->model('Autocomplete');
    $term=$this->input->post('term');
    if(sizeof($term) > 2){      
        $options=array('table'=>'patients','field'=>'patient_name','term'=>$term);
        $q=$this->Autocomplete->GetAutocomplete($options);
        foreach($q as $q)$json[]=$q->patient_name;
        echo json_encode($json);
}

现在我的问题是

  1. 它不起作用:D ..当我检查萤火虫发布请求时,它没有发布任何值。
  2. 我如何在自动完成请求中传递字段名称以及其搜索的术语?
  3. 是否有任何已经存在的 codeigniter 助手/自定义库可以以更清洁的方式做到这一点?

多谢

4

1 回答 1

0

我假设您有正确的网址发布到。这是我在您的代码中看到的问题:

$('input.completeme').each(function() {
    $(this).autocomplete({
            source: function(request, response) {
                $.ajax({ url: '<?=base_url()?>patients/autocomplete',
                data: { 'term': this.value}, <--you should not get the value here
                dataType: "json",
                type: "POST",
                success: function(data){
                    response(data);
                }
            });
        },
        minLength: 2
});
});

它应该是这样的:

$('input.completeme').each(function() {
  var term = this.value; //get the value here
    $(this).autocomplete({
            source: function(request, response) {
                $.ajax({ url: '<?=base_url()?>patients/autocomplete',
                data: { 'term': term}, 
                dataType: "json",
                type: "POST",
                success: function(data){
                    response(data);
                }
            });
        },
        minLength: 2
});
});

还要确保返回的 json 格式正确,以便 jquery ui 可以读取它。

于 2012-12-07T02:40:22.043 回答