我对 jQuery (1.7.2) 的 focusin/focusout 事件有疑问。
我在一个 div 中有 2 个输入。当其中一个获得焦点时,我想向 div 添加一个类。如果没有任何输入有焦点,我只想删除这个类。
$(function() {
$('#container').on('focusin',function(){
$(this).addClass('test');
}).on('focusout',function(){
if ($(this).find('input:focus').length) return;
$(this).removeClass('test');
});
$('#container input').on('keydown',function(e) {
var keycode = e.keyCode || e.which;
//When Tab or Return, switch input
if (keycode == 9 || keycode == 13) {
$($(this).attr('data-target')).focus();
return false;
}
});
});
<div id="container">
<input type="text" id="a" data-target="#b">
<input type="text" id="b" data-target="#a">
</div>
工作正常,当我用鼠标单击输入以切换焦点时。但是,当keydown()
通过调用$('#b').focus();
类将焦点设置到输入事件内的其他输入时,即使检查 div 内的现有焦点也是如此。
可能是因为 my return false;
,所以标签不会切换两次?您对此有任何替代解决方案吗?