Jquery工作在1.7但不在1.9.2

时间:2018-03-06 17:21:54

标签: jquery

我的代码仅适用于 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;
&#13;
&#13;

亲切的问候, JC

2 个答案:

答案 0 :(得分:2)

您可以使用document.activeElement作为提醒here来访问保持焦点的元素。 您也不需要事件对象。

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:-3)

我认为这是jQuery 1.7中的一个错误。焦点选择器应该找到当前聚焦的元素,但在1.7中,当没有任何焦点时它会找到正文。我会交换你的逻辑,以便不是寻找一个不是输入的聚焦元素,而是查看是否有任何输入被聚焦。

if ($(':focus:not("input")').length){

变为

if (!$('input:focus').length){