Jquery:创建一个字典来自动完成所有输入

时间:2013-01-21 10:13:36

标签: php javascript jquery jquery-ui jquery-autocomplete

我想在我的项目中添加一个智能自动完成功能,当用户在任何输入中输入一个单词时,它会自动完成自己的字典。

他的所有者字典是通过保存他提交给服务器的每个单词来构建的(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. 这是达到我的目标的好方法,或者我应该考虑不同的插件

1 个答案:

答案 0 :(得分:-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文件中获得一堆匹配的单词,并显示要选择的单词列表。