我编写的代码在用户选择有效的东西(下面)之后无法使用 JQuery autocomplete来触发结果函数. 结果,我的意思是结果处理程序,一个在自动完成插件中进行了良好选择后触发的函数.记录here. 在
结果,我的意思是结果处理程序,一个在自动完成插件中进行了良好选择后触发的函数.记录here.
在我的例子中,我有一个表格,它实际上是一个表格,每行都相同,减去字段上的唯一ID:Item1,Qty1,Desc1,然后是Item2,Qty2,Desc2,依此类推.当用户键入Item1代码时,Desc1文本应显示所选项目代码的英语(Item2 – > Desc2,依此类推).
我使用此代码查找所有项目输入并在其上拍打自动完成.结果事件处理程序由于某种原因不会触发.如果您注意到,我对“Item1”选项进行了硬编码,因为我还没有弄清楚如何选择项目对应的描述,其中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); }); });
$(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); }); });