Javascript 选择2按回车键取消选择

Javascript 选择2按回车键取消选择,javascript,jquery,jquery-select2,Javascript,Jquery,Jquery Select2,我已经实现了select2插件,并进行了一些定制,以隐藏选定的标记(我在一个单独的框中构建它们)、自定义搜索(介于(和)之间的单词不应在搜索范围内)以及避免在选择或取消选择元素时关闭下拉列表 我想实现的最后一个功能是,当用户使用箭头键在下拉列表中导航,并在已选择的元素上按enter键时,我想取消选中它,并使下拉列表保持打开状态 我试图监听由select2触发的所有事件,但当用户通过点击已选项目上的enter按钮选择元素时,我无法取消选择并阻止下拉列表关闭。 但是用鼠标一切都很好 var ava

我已经实现了
select2
插件,并进行了一些定制,以隐藏选定的标记(我在一个单独的框中构建它们)、自定义搜索(介于
之间的单词不应在搜索范围内)以及避免在选择或取消选择元素时关闭下拉列表

我想实现的最后一个功能是,当用户使用箭头键在下拉列表中导航,并在已选择的元素上按enter键时,我想取消选中它,并使下拉列表保持打开状态

我试图监听由
select2
触发的所有事件,但当用户通过点击已选项目上的enter按钮选择元素时,我无法取消选择并阻止下拉列表关闭。 但是用鼠标一切都很好

var availableData=[{
“id”:38,
“文本”:“测试[38](编码)”
},
{
“id”:62,
“文本”:“香蕉[62](水果)
},
{
“id”:63,
“文本”:“苹果[63](水果)
},
{
“id”:65,
“文本”:“狗[65](动物)
},
];
//初始化选择2
$('.js示例基本多个')。选择2({
//设置多元素选择
多重:对,
//设置占位符
占位符:“选择”,
//最好设置静态宽度,否则使用引导网格
//在容器父对象上,设置100%宽度
宽度:“300px”,
//带数据的初始化插件
数据:可用数据,
closeOnSelect:false,
模板选择:功能(ev、elem){
//隐藏选定元素
隐藏元素();
},
匹配器:函数(参数、数据){
//如果没有搜索词,则返回所有数据
if($.trim(params.term)='')返回数据;
//如果没有“文本”属性,则不显示该项
if(typeof data.text==='undefined')返回null;
//排除所有内部内容的正则表达式()
常量正则表达式=/^(+)\s\[([0-9]+)\]\s\((.+)\$/gm;
//应用正则表达式
var matches=data.text.matchAll(regex.next();
//如果没有匹配项,则返回null
如果(!matches)返回null;
//如果未找到任何组,则返回null
如果(!matches.value | | matches.value.length==0)返回null;
//如果第一个组中有匹配项,则返回它!(名称)
if(匹配.value[1].toLowerCase().indexOf(
params.term.toLowerCase()
)>-1)返回数据;
//如果在第二组中匹配,则返回它!(id)
if(匹配.value[2].toLowerCase().indexOf(
params.term.toLowerCase()
)>-1)返回数据;
//如果不应显示术语,则返回'null'
返回null;
}
});
$('.js示例基本倍数')。on('select2:select',函数(e){
log(“=>是我,选择2:select”);
});
$('.js示例基本倍数')。on('select2:closing',函数(e){
log(“=>是我,选择2:关闭”,e);
});
$('.js示例基本倍数')。on('select2:close',函数(e){
log(“=>是我,选择2:close”,e);
});
$('.js示例基本倍数')。on('select2:opening',函数(e){
log(“=>是我,选择2:打开”);
});
$('.js示例基本倍数')。on('select2:open',函数(e){
log(“=>是我,选择2:open”);
});
$('.js示例基本倍数')。on('select2:selection',函数(e){
log(“=>是我,选择2:选择”);
});
$('.js示例基本倍数')。on('select2:unselecting',函数(e){
log(“=>是我,选择2:取消选择”);
});
$('.js示例基本倍数')。on('select2:unselect',函数(e){
log(“=>是我,选择2:取消选择”);
});
$('.js示例基本倍数')。on('select2:clearing',函数(e){
log(“=>是我,选择2:清除”);
});
$('.js示例基本倍数')。on('select2:clear',函数(e){
log(“=>是我,选择2:clear”);
});
//Select2事件:选择或删除选项时触发。
$('.js示例基本倍数')。关于('change',函数(e){
//如果选择了几乎1个id,请使用“,”连接,否则为空字符串
var id=$(this.val()?$(this.val().join(','):“”;
log(“TODO:使用ID创建元素:”,ID);
//附在该段之后
$(“.the段落”).empty().append(“您的ID:+ID”);
});
这是我的HTML5样板