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
        });

如您所见,我有两个问题

问题

  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 回答