我想在我的项目中添加一个智能自动完成功能,当用户在任何输入中输入一个单词时,它会自动完成自己的字典。
他的所有者字典是通过保存他提交给服务器的每个单词来构建的(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个问题
问题
答案 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文件中获得一堆匹配的单词,并显示要选择的单词列表。