2010-01-08 77 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