我的代码仅适用于 jQuery 1.7 ,但我的网站现在正在使用 1.9.2 。我已经尝试了迁移插件,但没有成功。
我的想法是,只有在没有其他人聚焦的情况下,才会自动将我在我的页面上的一个字段集中在按键上。
$('body').on('keydown', function() {
if ($(':focus:not("input")').length) {
var input = $('input[name="textfield"]');
if(!input.is(':focus')) {
input.focus();
}
}
});

<!-- 1.9.2 is not listed on CDN, using 1.9.1 instead (which is still not compatible with the code probably for the same reasons.) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input name='textfield' id='keyboard_input' onfocus="this.value='';"/>
<input name='textfield2' id='keyboard_input2'/>
&#13;
亲切的问候, JC
答案 0 :(得分:2)
您可以使用document.activeElement
作为提醒here来访问保持焦点的元素。
您也不需要事件对象。
var input = $('input[name="textfield"]');
$('body').on('keydown', function() {
!$(document.activeElement).is('input, button, select, textarea') && input.focus();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input name='textfield' id='keyboard_input' onfocus="this.value='';">
<input name='textfield2' id='keyboard_input2'>
&#13;
答案 1 :(得分:-3)
我认为这是jQuery 1.7中的一个错误。焦点选择器应该找到当前聚焦的元素,但在1.7中,当没有任何焦点时它会找到正文。我会交换你的逻辑,以便不是寻找一个不是输入的聚焦元素,而是查看是否有任何输入被聚焦。
if ($(':focus:not("input")').length){
变为
if (!$('input:focus').length){