ASP.NET MVC视图上的JQuery自动完成

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

在我的视图中,我有一个工作jQuery自动完成一个。问题是我没有得到这些东西。MVC操作返回JSON数据,插件很好地读取数据,过滤器工作得很好——它列出了结果,我可以从下拉列表中选择。但当我选择它时,什么也不会发生——我可以按Enter键或单击它来选择一个项目。我想我必须以某种方式连接结果函数-我尝试使用onItemSelect选项,但它不起作用,什么都没有发生,结果也不会触发

最后,我想要的是能够不断地将用户选择的项目添加到或列表中

我想我的大多数问题都是因为缺乏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>
视图:


另外,请注意,我的解决方案需要启用和禁用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);
}