2012-10-09 33 views
0

我在Jquery auto完成器中輸入內容時收到錯誤的建議。 如果我鍵入「ja」,那麼它應該只顯示那些從「ja」開始的值,但它顯示全部。JQuery Autocompleter

我想將此自動補全值存儲到某個隱藏字段,但我無法做it.below是我的JSON格式是generated.so我想顯示的名稱標籤,並希望值分配給一些隱藏字段。 [{"id":1,"name":"Java"},{"id":2,"name":"Liferay"},{"id":3,"name":".Net"}

下面

是我的代碼片段。

$("input#auto").autocomplete({ 
    source:function(request, response) { 
     $.ajax({ 
      url: '<portlet:resourceURL />', 
      dataType: "json", 
      data: { 
       featureClass: "P", 
       style: "full", 
       maxRows: 12, 
       name_startsWith: request.term 
      }, 
      success: function(data) { 
       response($.map(data, function(item) { 
        return { 
         label: item.name, 
         value: item.id, 
        }      
       })); 
      },         
     }); 
    }, 
    minLength: 2, 
    dataType: "json",   
    select: function (event, ui) { 
     $("#skillName").val(ui.item.value);   
    } 
}); 

任何幫助將不勝感激。謝謝

+0

AJAX請求是否成功回來? –

+0

感謝您的回覆..我檢查了firebug中的響應 – Gautam

+1

如果您收到了錯誤的建議,那麼這是您所調用的Web服務的問題,而不是jQuery小部件。 –

回答

1

自動完成代碼似乎是正確的。它看起來可能是Web服務不返回你正在尋找的結果。另外,如果你想把名字作爲標籤來顯示,你應該將「name」重命名爲「label」,因爲這是jquery自動完成默認使用的鍵來顯示下拉菜單中的項目。

例如:

{"id":1,"name":"Java"},{"id":2,"name":"Liferay"},{"id":3,"name":".Net"} 

可能是

{"id":1,"label":"Java"},{"id":2,"label":"Liferay"},{"id":3,"label":".Net"} 

{"id":1,"name":"Java","label":"Java"},{"id":2,"name":"Liferay","label":"Liferay"},{"id":3,"name":".Net","label":".Net"} 

,你可以做的是使用自定義呈現由顯示內部名稱值的另一件事做這樣的事情:

Input.autocomplete()..data('autocomplete')._renderItem = function (ul, item) { 
     return $('<li></li>') 
     .data('item.autocomplete', item) 
     .append('<a class="ui-corner-all">' + item.name + '</a>') 
     .appendTo(ul); 
     } 
相關問題