2010-01-08 73 views
0

在我看來,我有一個正在運行的jQuery自動完成(bassistance)。問題是我只是沒有得到這個東西。 MVC操作返回JSON數據,插件很好地讀出它,並且過濾器效果很好 - 它列出了結果,我可以從下拉列表中選擇。但是當我選擇它時什麼都沒有發生 - 我通過按下Enter或點擊它來選擇一個項目。我想我必須以某種方式連接result()函數 - 我嘗試了onItemSelect選項,但它不起作用,沒有任何反應,result()不會觸發。關於ASP.NET MVC視圖的JQuery自動完成

最後,我想要的是能夠不斷地將用戶選擇的項目添加到列表或列表中。

我認爲我的大部分問題都來自缺乏一般的jQuery或JavaScript知識,我承認我從來不喜歡,但現在用ASP.NET MVC,我不得不學習它,實際上我發現它非常有用能夠繞過回傳..

這是到目前爲止我的代碼:

<script type="text/javascript"> 

$(document).ready(function() { 
    $("#Products").focus().autocomplete('<%=Url.Action("GetProducts", "Product") %>', { 
     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].product_id, result:data[i].product_name1}; 
      } 
      return rows; 
     }, 

     formatItem: function(row, i, n) { 
      return row.product_PrettyId + ' - ' + row.product_name1 + ' (' + row.product_price + ' €) '; 
     },  
     width: 900, 
     minChars: 0, 
     max: 0, 
     mustMatch: true, 
     onItemSelect: result, 
    }); 
}); 

function result(extra) { 
    $("#result").val(extra); 
} 

</script> 

查看:

<div> 
    <%=Html.TextBox("Products", null, new { style = "font-size: 20px; width: 900px"}) %> 
</div> 
<div id="result"></div> 

同時請注意,我的解決方案需要的J合作在我的最終解決方案中啓用和禁用avaScript我還想提供一個按鈕控件,它可以爲我的控制器操作添加項目到列表中的回發和經典帖子。

+0

我知道你對Javascript的感受,但請檢查一下。它來自道格Crockford和有助於理解的事情 - > http://www.youtube.com/watch?v=hQVTIJBZook – Dann 2010-01-08 21:36:43

回答

0

我相信你唯一需要改變的是你的結果方法。

function result(extra) { 
    $("#result").append(extra.selectValue); 
} 

您選擇的項目(額外)在內部存儲爲<li>。因此,您需要獲取selectValue,而不是val()。在過去六個月中,我一直在與JavaScript,JQuery和MVC摔跤,所以我感到你的痛苦。

+1

其實我只是發現,我有一個錯誤報告由Firebug的整個時間。 它在jquery.autocomplete.min.js和它的: s.toLowerCase不是一個函數 [Break on this error] * /;(function($){$。fn.extend({autocomple ... )){csub.push(x);}});}} return csub;} else \ n 任何人都有這方面的線索? 我提示NeilT你的回答是正確的,我的腳本會工作嗎.. – mare 2010-01-09 12:28:50