ASP.NET MVC视图上的JQuery自动完成
在我的视图中,我有一个工作jQuery自动完成一个。问题是我没有得到这些东西。MVC操作返回JSON数据,插件很好地读取数据,过滤器工作得很好——它列出了结果,我可以从下拉列表中选择。但当我选择它时,什么也不会发生——我可以按Enter键或单击它来选择一个项目。我想我必须以某种方式连接结果函数-我尝试使用onItemSelect选项,但它不起作用,什么都没有发生,结果也不会触发 最后,我想要的是能够不断地将用户选择的项目添加到或列表中 我想我的大多数问题都是因为缺乏jQuery或JavaScript知识,我承认我从来都不喜欢这些知识,但现在我不得不学习ASP.NET MVC,事实上,我发现能够绕过回发非常有用 这是我目前的代码:ASP.NET MVC视图上的JQuery自动完成,jquery,asp.net-mvc,asp.net-ajax,jquery-plugins,Jquery,Asp.net Mvc,Asp.net Ajax,Jquery Plugins,在我的视图中,我有一个工作jQuery自动完成一个。问题是我没有得到这些东西。MVC操作返回JSON数据,插件很好地读取数据,过滤器工作得很好——它列出了结果,我可以从下拉列表中选择。但当我选择它时,什么也不会发生——我可以按Enter键或单击它来选择一个项目。我想我必须以某种方式连接结果函数-我尝试使用onItemSelect选项,但它不起作用,什么都没有发生,结果也不会触发 最后,我想要的是能够不断地将用户选择的项目添加到或列表中 我想我的大多数问题都是因为缺乏jQuery或JavaScri
<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>
视图:
另外,请注意,我的解决方案需要启用和禁用JavaScript,因此在我的最终解决方案中,我还希望提供一个按钮控件,该控件将执行回发和经典的控制器操作,以便将项目添加到列表中。我相信您唯一需要更改的是结果方法
function result(extra) {
$("#result").append(extra.selectValue);
}
您选择的额外项在内部存储为。因此,您需要获取selectValue,而不是val。在过去的六个月里,我自己也与JavaScript、JQuery和MVC打过交道,所以我感受到了您的痛苦。Mare,看这里:
问题是自动完成建议您的数据始终是字符串,但在您的情况下,它不是真的-您使用的是json
使用非打包的autocomplete.js并添加s=s.toString;就在你的脚本失败的那一行之前。我知道你对Javascript的感觉,但是看看这个。这是Doug Crockford写的,有助于理解这件事->事实上,我刚刚发现我一直都有Firebug报告的错误。它在jquery.autocomplete.min.js中,它的this:s.toLowerCase不是函数[Break on this error]*/;函数${$.fn.extend{autocomple…{csub.pushx;}};}}}返回csub;}还有人\n对此有线索吗?如果你的答案是正确的,我的剧本会起作用吗。。
function result(extra) {
$("#result").append(extra.selectValue);
}