捕获TAB键并触发其他按键
Capture TAB keydown and trigger other keypress
我正在尝试改变html表单中选择的行为。
我希望当用户使用键盘导航表单时,如果他们正在选择一个元素并按tab键,则该元素被选中,焦点切换到下一个表单输入。通常,您需要按enter键来选择元素,然后可以使用tab切换到下一个元素。如果未按enter键,则不选择任何选项。
要做到这一点,我想捕获TAB键并触发一个回车键,后跟一个TAB。
这是我现在的内容:
$('form[class="ui form"]').on('keydown', 'div[class="ui fluid selection dropdown active visible"]', function (e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 9) {
e.preventDefault();
var y = jQuery.Event('keydown', {which: 13});
$(this).trigger(y);
var x = jQuery.Event('keydown', {which: 9});
$(this).trigger(x);
}
});
下面是一个示例:JSFiddle
代码'工作'到e.p preventdefault (), tab键不能切换焦点到下一个输入。但是,没有触发enter和tab操作,因此什么也不会发生。我该怎么办?提前谢谢你!
更新10/10:找到问题!触发事件x (tab键)使代码进入无限循环。因此,整个方法是错误的。
当我尝试传递which
作为事件对象时,它确实工作jsfiddle.net/mendesjuan/sL7tnfm6/5
$('form[class="ui form"]').on('keydown', 'div[class="ui fluid selection dropdown active visible"]', function (e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 9) {
e.preventDefault();
var y = jQuery.Event('keydown', {which: 13});
$(this).trigger(y);
}
});
问题中的代码草案触发了一个无限循环。问题的关键在于,当用户按下TAB键并将焦点切换到下一个元素时,捕获所选(活动)元素。
因此,最好使用一个名为onblur
的函数:
$('form[class="ui form"]').on('blur', '.dropdown', function () {
var y = jQuery.Event('keydown', {which: 13});
$(this).trigger(y);
});
相关文章:
- 如何添加浮动和非浮动,其他
- 与其他库的jQuery.noConflict()
- 播放当前视频时如何停止其他视频?JavaScript
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 除修剪外的其他功能
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- Array.length似乎不起作用;console.log则显示其他情况
- 如何消除代码中的未定义和其他问题
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- Jquery未定义函数正在停止其他操作
- 如何将我的javascript库公开给其他客户端使用
- Javascript阻止其他Javascript代码
- chart.series[id].remove()无法刷新高位图表/高位股票中其他系列的图例属性
- 使用向下箭头键(与tab键一样)聚焦下一个输入
- 如何“;过滤器”;或者以其他方式重构该数据
- java脚本在Chrome和其他浏览器中对LocaleTimeString的不同行为
- 捕获TAB键并触发其他按键