2

我正在使用 jquery 自动完成。我对下面的代码不满意,因为必须有更好的方法来做到这一点。(代码有效)

  1. 我希望用户在搜索框中输入 3 个字母
  2. 自动完成发布参数和服务器响应
  3. 在我们获得来自服务器的数据后,没有理由再次发布。 注意:每次用户添加新字母时,自动完成都会保留 postind 数据
  4. 因为我有数据,我想用这个数据作为自动完成的来源

下面的代码有一个小问题。在选择一个时,它会显示在框中。当我使用退格键时,它不会刷新/填充建议

问题:如何使用自动完成功能只发布一次并重复使用响应和自动完成的来源?

如果有人可以建议或指出我可以阅读的任何文件。

谢谢

jquery-1.9.1.min.js
jquery-ui-1.10.0/jquery-ui.js

     $("#birds").autocomplete
    ({
    来源:功能(请求,响应){
    $.ajax(
    {
    网址:“page.aspx”,
    数据: {
    段:request.term,
    组ID:11,
    rGUI: 'd9',
    rURL: 'domain.com/',
    任务:'得到东西'
    },
    类型:“发布”,  
    数据类型:“json”,  
    成功:函数(数据){

    //响应:函数(项目){
    var arr = $.map(数据,函数(项目){
    返回 {
    标签:item.LN60,
    值:item.LN60,
    NDC:项目.NDC
    }
    });

    $("#birds").autocomplete({
    来源:arr,
    最小长度:1
    });

    $("#birds").autocomplete({
    关闭:函数(事件,用户界面){
    建议药物请求();
    }
    });

    }
    });
    },
    最小长度:2,
    选择:函数(事件,用户界面){
    log(ui.item ? "选择:" + ui.item.value +
    " aka " + ui.item.NDC : "没有选择,输入是 "
     + this.value);
    }
    });

4

2 回答 2

4

您应该做的不是将 ajax 调用添加到自动完成的源属性,而是将自动完成功能添加到 ajax 调用的回调中:

$.ajax({
//all your other call settings
 success: function(data){
  //init autocomplete
  $('#birds').autocomplete({
       source: data,
       //all your other autocomplete settings
  });
 }
});
于 2013-02-22T16:43:06.587 回答
1

发出 $.ajax 请求并在函数内部绑定您的自动完成(进行 .autocomplete 函数调用)success: function(data) {

然后将自动完成设置sourcedata返回的(现在显然是静态的)

于 2013-02-22T16:42:54.643 回答