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 .. firebugの投稿リクエストをチェックすると、値は投稿されません。
  2. オートコンプリート リクエストで、検索対象の用語とともにフィールド名を渡すにはどうすればよいですか?
  3. これをよりクリーンな方法で実行できる既存の codeigniter ヘルパー/カスタム ライブラリはありますか?

どうもありがとう

4

1 に答える 1

0

投稿する正しいURLがあると思います。これが私があなたのコードで見た問題です:

$('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
});
});

また、jquery uiが読み取れるように、返されるjsonが正しい形式であることを確認してください。

于 2012-12-07T02:40:22.043 に答える