如何在jQuery UI自动完成中实现“mustMatch”和“selectFirst”?

前端之家收集整理的这篇文章主要介绍了如何在jQuery UI自动完成中实现“mustMatch”和“selectFirst”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近将几个自动填充插件bassistance生产的插件迁移到 jQuery UI autocomplete

如何实现“mustMatch”和“selectFirst”只是回调和其他选项,而不修改核心自动完成代码本身?

解决方法

我想我解决了这两个功能

为了简化操作,我使用了一个常用的自定义选择器:

$.expr[':'].textEquals = function (a,i,m) {
    return $(a).text().match("^" + m[3] + "$");
};

其余的代码

$(function () {
    $("#tags").autocomplete({
        source: '/get_my_data/',change: function (event,ui) {
            //if the value of the textBox does not match a suggestion,clear its value
            if ($(".ui-autocomplete li:textEquals('" + $(this).val() + "')").size() == 0) {
                $(this).val('');
            }
        }
    }).live('keydown',function (e) {
        var keyCode = e.keyCode || e.which;
        //if TAB or RETURN is pressed and the text in the textBox does not match a suggestion,set the value of the textBox to the text of the first suggestion
        if((keyCode == 9 || keyCode == 13) && ($(".ui-autocomplete li:textEquals('" + $(this).val() + "')").size() == 0)) {
            $(this).val($(".ui-autocomplete li:visible:first").text());
        }
    });
});

如果您的任何自动填充建议包含regexp使用的任何“特殊”字符,则必须转义自定义选择器中m [3]中的那些字符:

function escape_regexp(text) {
  return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");
}

并更改自定义选择器:

$.expr[':'].textEquals = function (a,m) {
  return $(a).text().match("^" + escape_regexp(m[3]) + "$");
};

猜你在找的jQuery相关文章