jQuery自动完成功能不适用于js对象

巴比斯

我正在尝试使用JQuery自动完成功能,但无法使其正常工作。当我从下拉列表中选择产品但搜索不起作用时,输入将获取值。不管我键入什么,每次都会显示2个选项。

<input style="width:80px;" id="product_code"></input>
<input style="width:220px;" id="product_name"></input>

--

var product = [
    {
        "name": "chocolate",
        "code": "050"
    },
    {
        "name": "cake",
        "code": "10000"
    }
];

$('#product_name').autocomplete({
        minLength: 2,
        source: function (request, response) {
           response($.map(product, function (value, key) {
                return {
                    label: value.name,
                    value: value.code
                }
            }));

        },
        select: function(event, ui) {
            $('#product_code').val(ui.item.value);
            $('#product_name').val(ui.item.label);
                return false;
        }
    });
德克尔

sourcejQuery的UI的自动完成的选项可以接受一个功能,你需要记住的是:

回调有两个参数:

  1. request具有单个term属性的对象,对象引用文本输入中当前的值。例如,如果用户在城市字段中输入“ new yo”,则“自动完成”字词将等于“ new yo”。
    所以基本上您应该使用request.term
  2. 一个response回调,需要一个参数:向用户建议的数据。该数据应根据提供的术语进行过滤,并且可以采用上述针对简单本地数据所述的任何格式。提供自定义源回调以处理请求期间的错误时,这一点很重要。即使遇到错误,也必须始终调用响应回调。这样可以确保小部件始终具有正确的状态。

背后的想法source是,它使您可以完全控制要显示的数据,但是,这也使您有责任进行所有过滤并决定要显示的值。

如果要检查数组中namecode中的值product是否具有您刚刚搜索的术语,则应使用:

if (val.name.indexOf(request.term) > -1 || val.code.indexOf(request.term) > -1)

这是一个例子:

var product = [
  {
    "name": "chocolate",
    "code": "050"
  },
  {
    "name": "cake",
    "code": "10000"
  }
];

$('#product_name').autocomplete({
  minLength: 2,
  source: function (request, response) {
    response($.map(product, function (val, i) {
      if (val.name.indexOf(request.term) > -1 || val.code.indexOf(request.term) > -1) {
        return {
          label: val.name,
          value: val.code
        };
      }
    }));
  },
  select: function(event, ui) {
    $('#product_code').val(ui.item.value);
    $('#product_name').val(ui.item.label);
    return false;
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<input style="width:80px;" id="product_code"></input>
<input style="width:220px;" id="product_name"></input>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Jquery UI 自动完成功能不适用于搜索带有 id 的名称

jQuery自动完成功能不适用于ASP.NET MVC 5

自动完成功能不适用于jQuery v1.8.3(版本)

自动完成功能不适用于动态创建的输入字段 jQuery

jQuery UI自动完成功能不适用于我

JQuery 自动完成功能不适用于 minLength 0 和自定义样式

PHPStorm自动完成功能不适用于Laravel 5

自动完成功能不适用于克隆的输入元素

golang片段/自动完成功能不适用于vs代码

物料自动完成功能不适用于InputProps

React Material UI自动完成功能不适用于Formik

为什么PyCharm的自动完成功能不适用于我安装的库?

:vsplit自动完成功能不适用于VIM中的/ django /目录

Tab自动完成功能不适用于apt-get install(kubuntu)

PyCharm自动完成功能不适用于pygame

自动完成功能不适用于枚举-Swift 3

Materialize.css自动完成功能不适用于Polymer

自动完成功能不适用于值数组

Bash选项卡自动完成功能不适用于apt

YouTube搜索自动完成功能不适用于Framework 7

Emmet自动完成功能不适用于Sublime中的php文件(展开缩写)

PyCharm:Intellisense或自动完成功能不适用于Python 3.5.2

XCode自动完成功能不适用于Objective C中的特定项目

自动完成功能不适用于新的SWIFT文件/类

自动完成功能不适用于Solr中的多个字段

jQuery UI自动完成功能突出显示了多个输入:不适用于大写吗?

具有过滤器的材料自动完成功能不适用于异步数据

使用非拉丁字符时,自动完成功能不适用于某些移动浏览器

适用于 Unity 的 Visual Studio 自动完成功能不起作用