2013-10-08 44 views
2

我正在jQuery数据源使用jquery自动完成。jquery autocomplete-将数据添加到选择事件列表

这是我的代码: clientId,clientName是输入字段的ID。

$("#clientId").autocomplete({ 
     source: function(request, response){ 
      var clientId=request.term; 
      $.ajax({ 
       type:"GET", 
       url:"getClients.htm?ClientId=" + clientId +"&ClientName=", 
       dataType:"json", 
       success: function(data){ 
        if(pageCountClientId == 0){ 
       data.push({clientId:"More Options",clientName:"More Options"}); 
         pageCountClientId++; 
        } 
        else{ 
       data.push({clientId:"Previous Options",clientName:"Previous Options"}); 
         pageCountClientId++; 
        } 
        response($.map(data,function(value,key){ 
         return{ 
          label:value.clientId, 
          value:value.clientName 
         }; 
        }));          
       } 
      }); 
     }, 
     minLength: 1, 
     select: function(event, ui){ 
      if(ui.item.value == "More Options"){ 
       pageCountClientId++; 
      } 
      else if(ui.item.value == "Previous Options"){ 
       pageCountClientId--; 
      } 
      else{ 
       $("#clientName").val(ui.item.value); 
       $("#clientId").val(ui.item.label); 
       $("#clientName").attr("disabled", "disabled"); 
       $("#clientId").attr("disabled", "disabled"); 
      } 
      return false; 
     }, 
    }); 

当用户点击“更多选项”值,在选择事件所以现在我想获得下一组结果,并在出现的下拉列表中显示。如何做到这一点。任何在正确的方向指针将不胜感激。

回答

1

我认为这应该是从select处理程序调用search的问题。但是,正如你可能已经发现的那样,这不起作用quite right

您应该能够使其通过增加一个小的超时工作:

select: function(event, ui){ 
    if(ui.item.value == "More Options"){ 
     pageCountClientId++; 
     setTimeout($.proxy(function() { 
      $(this).autocomplete('search', this.value); 
     }, this), 1); 
    } 
    else if(ui.item.value == "Previous Options"){ 
     pageCountClientId--; 
     setTimeout($.proxy(function() { 
      $(this).autocomplete('search', this.value); 
     }, this), 1); 
    } 
    else{ 
     $("#clientName").val(ui.item.value); 
     $("#clientId").val(ui.item.label); 
     $("#clientName").attr("disabled", "disabled"); 
     $("#clientId").attr("disabled", "disabled"); 
    } 
    return false; 
}, 

例子:http://jsfiddle.net/fTFkY/2/

的例子使用本地源,但是模拟的AJAX请求。希望这有助于!

+0

谢谢安德鲁!有效。我能够使用代理功能和Auto complete的搜索功能打一个ajax电话 – kayzid

+0

@kayzid:很高兴工作!如果有帮助,请接受答案。 –

+0

+1000很酷 –