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

时间:2016-01-12 10:52:46

标签: javascript jquery

我有一个快捷键 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">

4 个答案:

答案 0 :(得分:4)

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

&#13;
&#13;
$(document).keydown(function(event) {
  if (event.which == 75) {
    event.preventDefault();
    $('input').focus();
  }
});

$('input').keydown(function(e) {
  e.stopPropagation();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<input type="text">
&#13;
&#13;
&#13;

答案 1 :(得分:2)

这是另一种方式:

在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">

答案 2 :(得分:1)

如果您想突然停止传播,您还可以使用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">

答案 3 :(得分:0)

#! /bin/bash
cat filename | while read LINE; do
    echo $LINE
done
  1. 收听var input = $('input'); $(document).on('keyup', function (e) { if(input.is(':focus')){ return; } if (e.which == 75) { input.focus(); } }); 事件;
  2. 如果输入已经集中,请不要再次关注。