0

プロジェクトにスマート オートコンプリートを追加したいと考えています。ユーザーが任意の入力に単語を入力すると、自分の辞書からオートコンプリートされます。

彼の所有者辞書は、サーバーに送信したすべての単語を (array_values($_POST)) のように保存することによって構築されます。

私の現在のJS

$('input.complete').live('keyup.autocomplete', function(){
        var hi=$(this).val().toUpperCase();
        var was=this;
        $(this).autocomplete({
//PROBLEM Should i consider to change source from ajax/mysql to different source ?
//since there gona be too many requests ??
            source: function(request, response) {
                    $.ajax({ url: '<?=base_url()?>ajax/ac',
//PROBLEM how can i set term=word currently being edited..(start=' ',end=pointerpos)
                    data: { 'term': this.term },
                    dataType: "json",
                    type: "POST",
                    success: function(data){
                        if(data.length){
                            //response(data);
          //Commented out cause i dont wana display dropdown.. just typeahead.
                              if(data[0]['value'].substr(0,hi.length).toUpperCase()==hi){
                                $(was).val(data[0]['value']);
//currently working with single word inputs..once i get how to select only current word will edit these..
                                was.selectionStart=hi.length;
                                was.selectionEnd=data[0]['value'].length;   
                            }
                        }
                    }
                });
            },
            select: function(event, ui){},
            minLength: 2,
            delay: 500
        });

ご覧のとおり、2つの問題があります

質問

  1. ユーザーが入力している現在の単語を選択するにはどうすればよいですか?
  2. これは私の目標を達成するための良いアプローチですか、それとも別のプラグインを検討する必要があります
4

1 に答える 1

-1

PHP言語も使用しています。私の意見では、PHP を使用して問題をより簡単に解決できます。get.php ファイルに php 関数 get_word($excerpt) があるとします。そう、

<?php
     get_word($_POST['excerpt']);
     function get_word($excerpt) {
          // Find exact word from database or array using given $excerpt
          // and return complete word.
          return $complete_word;
     }
?>

そしてあなたのjqueryで(入力フィールドを.inputと仮定して)、

$(document).ready(function() {
     $('.input').live('keyup',function() {
          var excerpt = $(this).val();
          $.post("get.php", {excerpt:excerpt}, function(data) {
               // do anything with data.
               $('.input').val(data);
          });
     });
})

より正確には、get.php ファイルから一致する単語の束を取得し、選択する単語のリストを表示できます。

于 2013-01-21T11:16:10.090 に答える