javascript - jQuery UI 自动完成 - 在 focusOut 上未选择匹配的选项

标签 javascript jquery jquery-ui jquery-autocomplete jquery-ui-autocomplete

我制作了一个 jQuery UI - 自动完成,其中添加了以下条件:

  1. 已排序的选项列表
  2. 强制选择一个选项

这里我犯了一个错误,当我输入确切的选项时,它没有被选中。

例如:

var json = ["JOAQUIN", "BERNARDINO", "MODOC", "ALASKA", "MADERA", "ANDERSON", 
                                                  "Kingston", "Kala", "Aka"];
  1. I type aka, it is not accepting.
  2. I also tried Aka, still it is not accepting.

如何重现:

After typing the above text in textbox, just focusout - The value will be emptied. I want to handle aka = Aka = AKA (with/without selecting from option list)

PS:我不是要求代码,我犯了一个小错误,我需要它是正确的。

这是我的 fiddle ,您可以在其中轻松重现异常。

如何更改我的代码以使其像这样工作。请分享您的建议,并为我指明正确的方向,以安排条件。

最佳答案

如果将事件更改为关闭而不是更改事件会怎样。然后检查该值是否在数组中,如果不在则清除容器。这将要求您在输入值时匹配大小写。如果您想忽略大小写,可以在搜索数组之前将 json 数组转换为小写,并将值转换为小写。

fiddle

var json = ["JOAQUIN", "BERNARDINO", "MODOC", "ALASKA", "MADERA", "ANDERSON", "Kingston", "Kala", "Aka"];
$('input').autocomplete({
    source: function (request, response) {
        var matches = $.map(json, function (json) {
            if (json.toUpperCase().indexOf(request.term.toUpperCase()) === 0) {
                return json;
            }
        });
        response(matches);
    },

    close: function(event, ui) {
        var index = jQuery.inArray($('input').val(), json);
        if (index == -1) {
            $('input').val("");           
        }
    }
});

关于javascript - jQuery UI 自动完成 - 在 focusOut 上未选择匹配的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19022062/

相关文章:

javascript - VueJS : Getting values from multiple checkbox binding in textboxes

javascript - 更改选择元素中选项的颜色

javascript - 如何使用 jQuery Mobile 从网站获取数据来构建应用程序 apk?

jquery - 无限卷轴 : set scrollTop() such that page does not shift

ASP.NET 部分回发期间打开时的 jQueryUI 日期选择器行为 : year becomes 1899 or 1900

jquery - Firefox 文本输入不会聚焦

javascript - 如何在 jQuery 中单击后禁用按钮

javascript - 为什么这两个函数更新 React 组件的方式不同?

Javascript - Jquery 链接不起作用

javascript - 测量鼠标点击时间长度的计时器