我有一个显示项目列表的自定义自动完成下拉列表。用户可以从下拉列表中选择,也可以在文本字段中输入一些文本并按 Enter。我希望能够区分用户从自动完成下拉列表中选择项目和按 Enter 与按 Enter 而不从下拉列表中选择项目。目前使用下面显示的代码框架,我看到在 Firefox 中,当有人使用键盘选择下拉项并按 Enter 键时,自动完成中的 select 函数首先触发,然后是 evtHandlers 中的 enter 键操作,即。ajaxRedirect 函数覆盖自定义自动完成中选择函数的结果。当有人使用键盘从下拉列表中选择并按回车键时,我想阻止执行 ajaxRedirect。笔记:
Plugin.prototype = {
init: function (opts) {
this.fireAutoComplete(opts);
this.evtHandlers(opts);
}
evtHandlers: function (opts) {
$("#" + opts.currentEl).on('keypress', function (e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (e.which == 13) {
self.ajaxRedirect(opts, $(this).val());
}
});
}
fireAutoComplete: function (opts) {
$("#" + opts.currentEl).s4_autocomplete({
select: function (src, id, fields) {
//fire the function on selecting the dropdown item
}
});
}