2009-09-21 70 views
3

我寫了代碼,在用戶選擇了一些有效的(下)之後,無法使用JQuery autocomplete來激發結果函數。如何讓Jquery自動完成結果事件處理程序正常工作?

結果,我的意思是結果處理函數,一個在自動完成插件中發生好選擇後觸發的函數。記錄在案here

在我的情況下,我有一個表格,它是一個真正的表,其中每一行都是相同的,減去字段上的唯一標識號:Item1,Qty1,Desc1,然後是Item2,Qty2,Desc2等等。當用戶輸入Item1代碼時,Desc1文本應該顯示所選項目代碼的英文(Item2 - > Desc2等等)。

我使用此代碼來查找所有項目輸入並對其執行自動完成。由於某種原因,結果事件處理程序不會觸發。如果您注意到,我硬編碼了「Item1」選項,因爲我還沒有弄清楚如何選擇相應的Desc到Item1 - > Desc1,Item2 - > Desc2等項目。

我只使用了MVC Url.Content,因爲我碰巧得到它的工作。有人使用Url.Action,我認爲它更好,只需要弄明白。

隨意根據需要糾正我的使用,這是我第一次使用ASP.NET MVC/JQuery。

謝謝:)

代碼:

$(document).ready(function(){ 

    $("input[id^='Item']").autocomplete("<%= Url.Content("~/products/autocomplete")%>", { 
    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].id }; } 
     return rows; 
    }, 
    formatItem: function(row, i, n) { 
      return row.id + ' - ' + row.name; 
     }, 
    selectFirst: true, 
    //autoFill: true, 
    minChars: 2, 
    max: 30, 
    autoFill: true, 
    mustMatch: true, 
    matchContains: false, 
    scrollHeight: 100, 
    width: 300, 
    cacheLength: 1, 
    scroll: true 
    }); 

    $("Item1").result(function(event, data, formatted) { 
     $("Desc1").html(!data ? "No match!" : "Selected: " + formatted); 
    }); 
}); 

回答

7
$(document).ready(function(){ 

    $("input[id^='Item']").autocomplete("<%= Url.Content("~/products/autocomplete")%>", { 
      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].id }; } 
       return rows; 
      }, 
      formatItem: function(row, i, n) { 
       return row.id + ' - ' + row.name; 
      }, 
      selectFirst: true, 
      //autoFill: true, 
      minChars: 2, 
      max: 30, 
      autoFill: true, 
      mustMatch: true, 
      matchContains: false, 
      scrollHeight: 100, 
      width: 300, 
      cacheLength: 1, 
      scroll: true 
    }).result(function(event, data, formatted) { 
     var n = $(this).attr("id").match(/\d+/); 
     var b = $("span[id='Desc"+n+"']") 
     b.html(!data ? "No match!" : "Selected: " + formatted); 
    }); 
}); 
+0

良好的工作,以顯示自動完成的文本框的每個屬性。 – 2011-07-18 06:17:40