javascript - 我们可以触发 tabkey 事件以将光标下一个元素移动到 select2
问题描述
我只想触发 tabkey 事件,而不是关注下一个元素。下面是我尝试过的代码它在select2之后没有聚焦。这就是为什么我试图调用 tabkey 事件。
$('select').select2({
placeholder: 'Select a month'
});
jQuery.extend(jQuery.expr[':'], {
focusable: function(el, index, selector) {
return $(el).is('a, button, :input, [tabindex]');
}
});
$(document).on('keydown', ':focusable', function(e) {
if (e.which == 13 && this.tagName.toLowerCase() != "textarea") {
e.preventDefault();
$(this).trigger({
"type": 'keypress',
which: 9
})
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://rawgit.com/select2/select2/master/dist/js/select2.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.min.css" rel="stylesheet" type="text/css">
<form>
<input type="text" class="form-control">
<input type="text" class="form-control">
<input type="text" class="form-control">
<input type="text" class="form-control">
<input type="text" class="form-control">
<select >
<option value="JAN">January</option>
<option value="NOV">November</option>
<option value="DEC">December</option>
</select>
<select >
<option value="JAN">January</option>
<option value="NOV">November</option>
<option value="DEC">December</option>
</select>
</form>
解决方案
您可以将自定义参数传递给您的虚构事件,然后侦听 tabkey 的所有输入(最好使用委托)keypress
,如果事件具有特殊参数,那么e.preventDefaults()
焦点不会改变。
推荐阅读
- c# - WPF DataGrid:在编辑单元格时添加一行会破坏编辑关闭检测
- python - Python re.sub() 没有替换字符串
- python - matplotlib pcolormesh 大数组的行为
- amazon-web-services - 使用 Terraform 更改 AWS VPC 内置本地路由表和网络接口
- css - 路由参数导致 CSS 在使用 Node.js 和 Express 时无法加载
- python - GCP 上的 BI 引擎
- python - 计算 LSA 时出现“预期二维数组,得到一维数组”错误
- javascript - 批量创建对象数组
- python - 我怎么能做这个功能pythonic?
- c++ - 是否有 _aligned_realloc 的 linux 等价物