繁体   English   中英

在keydown事件之后关注字段而不插入字符

[英]Focus on field after keydown event without inserting character

我有一个快捷键K. 它应该专注于我的输入,但我不希望它在焦点时插入字母K

 $(document).keydown(function(event) { if (event.which == 75) { $('input').focus(); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <input type="text"> 

您可以使用event.preventDefault()来停止事件的标准行为。 但请注意,这将阻止字母K在输入中input 为此,您需要向input本身添加keydown处理程序,以阻止事件传播到达document 尝试这个:

 $(document).keydown(function(event) { if (event.which == 75) { event.preventDefault(); $('input').focus(); } }); $('input').keydown(function(e) { e.stopPropagation(); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <input type="text"> 

这是另一种方式:

在keydown时,如果它是k并且输入没有焦点,则阻止默认行为并将焦点放在文本字段上。

 $(document).keydown(function(event) { if (event.which == 75 && !$('input').is(":focus")) { event.preventDefault(); $('input').focus(); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <input type="text"> 

如果你想突然停止传播,你也可以使用return false;

 $(document).keydown(function(event) { if (event.which == 75) { $('input').focus(); return false; } }); $('input').keydown(function(e) { e.stopPropagation(); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <input type="text"> 

var input = $('input');

$(document).on('keyup', function (e) {
  if(input.is(':focus')){
    return;
  }
  if (e.which == 75) {
        input.focus();
    }
});
  1. 听取keyup事件;
  2. 如果输入已经聚焦,请不要再次聚焦。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM