javascript - 选择自动完成项目不起作用

标签 javascript jquery json razor autocomplete

我的 ASP.NET MVC Web 应用程序中有以下字段:-

<input  class="push-up-button searchmargin" placeholder="Search by tag.." name="searchTerm2" data-autocomplete-source= "@Url.Action("AutoComplete", "Home")" type="text" style="margin-top:8px"/>

我编写了以下自动完成功能:-

$("input[data-autocomplete-source]").each(function () {
        var target = $(this);
        target.autocomplete({
            source: target.attr("data-autocomplete-source"), minLength: 1, delay: 1000,

            create: function () {
                $(this).data("autocomplete")._renderItem = function (ul, item) {
                    return $('<li>').append('<a>' + item.label + '<br>' + item.resourcename + ' | ' + item.customername +  ' | ' +item.sitename + '<hr>' +'</a>')
                                    .appendTo(ul);
                };
            }
        });
    });

目前,自动完成功能运行良好(将显示结果列表),但问题是,如果我从自动完成结果中选择一个项目,它将不会呈现在自动完成字段内。当我检查firebug 我在选择自动完成项目时注意到以下错误:-

TypeError: item is undefined
[Break On This Error]   

self.element.val( item.value );

例如,如果我开始输入以下单词“我是”,然后我从自动完成列表结果中选择“我正在写作”,那么自动完成字段将具有“我是”文本,而不是选择“我是”写作”。任何人都可以建议,是什么导致了这个问题?

谢谢

编辑

我通过添加焦点和选择编辑了我的自动完成功能:-

 $("input[data-autocomplete-source]").each(function () {
        var target = $(this);
        target.autocomplete({
            source: target.attr("data-autocomplete-source"), minLength: 1, delay: 1000,
            focus: function (event, ui) {
                $("input[data-autocomplete-source]").val(ui.item.label);
                return false;
            },
            select: function (event, ui) {
                $("input[data-autocomplete-source]").val(ui.item.label);
                return false;
            },

            create: function () {
                $(this).data("autocomplete")._renderItem = function (ul, item) {
                    return $('<li>').append('<a>' + '<b>'+item.label + '</b><br>' + '<span style="color:#8e8e8e ">' + item.resourcename + ' | ' + item.customername + ' | ' + item.sitename + '<hr style="padding: 0px; margin: 0px;">' + '</span></a>')
                                    .appendTo(ul);
                };
            }

        });
    });

但是当我尝试选择自动完成项目时,我会收到以下错误:-

TypeError: ui.item is undefined

最佳答案

请添加“选择”事件并尝试以下操作

 $( "input[data-autocomplete-source]" ).autocomplete({
       select: function( event, ui ) {
         $( "input[data-autocomplete-source]" ).val( ui.item.yourValueProperties);
         return false;
      }
  });

***Note : yourValueProperties= like customername *** 

关于javascript - 选择自动完成项目不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25115723/

相关文章:

javascript - jQuery 在突出显示的段落中一次又一次地添加相同的文本

java org.json 比较对象

javascript - jquery/Javascript中浏览图片时如何获取本 map 片路径

javascript - 当我使用 best_in_place 进行更改时,我想更新页面上的另一个文本值

javascript - Discord JS 类别和返回 ID

javascript - 标签输入字段不适用于 Turbolinks

javascript - 如何使用 css 悬停在另一个元素和伪类上制作叠加层::之前

jquery - 谷歌地图 Iframe 嵌入在 bootstrap/foundation 上不起作用

javascript - 使用npm的request包,你应该如何传递最初保存在文件中的数据?

java - JSON 格式的字符串到字符串数组