0
我对jQuery(1.7.2)的focusin/focusout事件有问题。当调用.focus()并返回false时,jquery focusin不起作用;
我有一个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>
工作正常,当我点击进入输入,我的鼠标切换焦点。但是当通过调用$('#b').focus();
将焦点设置到输入的keydown()
事件中的其他输入时,即使在检查div内的现有焦点时,该类也会被删除。
也许是因为我的return false;
,所以标签不会切换两次?你有其他解决方案吗?
我在一个单独的.js文件中声明的输入。对于某些风格的东西(淡入/淡出),我想在一个单独的位置处理“整个焦点”,从输入声明中尽可能多地取出线条。 但同时它是一个很好的解决方法,在那里添加类。但是从长远来看,无论如何我都需要一个解决方案。 但是,谢谢! – Wulf 2012-08-05 14:28:25