我有一个快捷键 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">
答案 0 :(得分:4)
您可以使用event.preventDefault()
来停止事件的标准行为。但请注意,这会阻止K
输入字母input
。为此,您需要向keydown
本身添加input
处理程序,以阻止事件传播到达document
。试试这个:
$(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;
答案 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
var input = $('input');
$(document).on('keyup', function (e) {
if(input.is(':focus')){
return;
}
if (e.which == 75) {
input.focus();
}
});
事件;