0

我做了一个jQuery UI - autocomplete,我在其中添加了以下条件:

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

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

例如:

var json = ["JOAQUIN", "BERNARDINO", "MODOC", "ALASKA", "MADERA", "ANDERSON", 
                                                  "Kingston", "Kala", "Aka"];
  1. 我打字aka不接受
  2. 我也试过Aka了,还是不接受

如何重现:

在 中输入上述文字textbox,只需focusout- 值将被清空。我想处理(有/没有从选项列表中选择)aka = Aka = AKA

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

这是我的小提琴,您可以轻松地重现异常。

我怎样才能改变我的代码像这样工作。请分享您的建议,并为我指明正确的方向,以便按顺序排列条件。

4

2 回答 2

2

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

小提琴

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("");           
        }
    }
});
于 2013-09-26T08:00:38.843 回答
0

据我从文档中可以看出,UI 属性仅在选择(单击)下拉项时设置,因此您必须在更改功能中添加验证以手动检查值。

于 2013-09-26T07:58:58.733 回答