2009-09-16 25 views
0

我正在使用调用返回json的服务的自动完成jQuery插件(api doc)。我有插件消耗JSON结果罚款,一切正常,执行我的自定义formatResult函数永远不会被调用。我想使用该函数来捕获用户从结果列表中选择以填充页面上的各种其他字段。为什么不使用jQuery自动完成插件调用我自定义的formatResult函数?

$(document).ready(function() { 
    $("#vendorname").autocomplete("/Vendor/Search", { 
     dataType: 'json', 
     parse: function(data) { 
      var rows = new Array(); 
      for (var i = 0; i < data.length; i++) { 
       rows[i] = { data: data[i], value: data[i].Name, result: data[i].Name }; 
      } 
      return rows; 
     }, 
     formatItem: function(row, i, n) { 
      return row.RepName + ' (' + row.VendorId + ')'; 
     }, 
     formatResult: function(row, i, n) { 
      return '(formatResult) ' + row.Name; 
     }, 
     width: 200, 
     mustMatch: false, 
     scroll: true, 
     scrollHeight: 300 
    }); 
}); 

JSON字符串从服务返回的是(双供应商对象)

[{"VendorId":1,"Name":"abc","RepName":"rep of abc","Phone":null,"Email":null,"Notes":null,"Version":null,"Fax":null,"ProductQuotes":[],"PurchaseOrders":[]},{"VendorId":2,"Name":"def","RepName":"rep of def","Phone":null,"Email":null,"Notes":null,"Version":null,"Fax":null,"ProductQuotes":[],"PurchaseOrders":[]}] 

所以,

1)为什么formatResult永远不会打?

2)当用户从结果中选择一个项目时,是否有更好的方法来获取对象属性?

回答

2

格式结果只是改变文本框中显示的内容。如果你想拦截输入更改值,那么做

$("#vendorname").result(function(event, data, formatted){ 
    //do something 
    }); 
0

作为一个说明这里,注意formatResultformatItem不会出现工作/ jQuery中的核心自动完成任何不复存在。相反,我使用了this reply和一些我自己的代码。这是我赢得的代码。这个特殊的功能照顾的价值和标签,但你可以把你自己的任何功能:

$(document).ready(function(){ 
    $('#TradeFromUserId').autocomplete({ 
     minLength: 3, 
     source: '/my.json', 
     select: function(event, ui { 
      var selectedObj = ui.item; 
      $('input#TradeFromUserId').val(selectedObj.label); 
      $('input#TradeFromUserIdHidden').val(selectedObj.value); 
      return false; 
     focus: function(event, ui){ 
      var selectedObj = ui.item; 
      $('input#TradeFromUserId').val(selectedObj.label); 
      $('input#TradeFromUserIdHidden').val(selectedObj.value); 
      return false; 
     } 
    }); 
}); 
相关问题