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