这是我的HTML:
<div><input/></div>
这是我的jQuery:
$('input').focus();
$('input').blur(function () { console.log('BLUR!'); });
$('div').effect('shake');
不知何故,摇晃效果会触发模糊事件。这真的很烦人。有什么建议吗?
编辑:以下情况类似http://jsfiddle.net/kN7tr/1/
答案 0 :(得分:2)
经过一番挖掘,看起来这就是罪魁祸首http://bugs.jqueryui.com/ticket/7595
这是修复:
// Fixes #7595 - Elements lose focus when wrapped.
if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
$( active ).focus();
}
(如果您感兴趣的话,这是1.8.16的第4425行 - 该评论具有误导性,因为它正在谈论装饰器(与文字包装或任何事情无关))
Fiddle有1.8.14,报告了该bug。
此修复程序在1.8.16中可用,可在Google CDN上获得(显然,如果您下载了最新版本)
答案 1 :(得分:0)
您可以在focus
动画完成后将shake
设置回输入
$('div').effect('shake', function(){
$('input').focus();
});
警告 demo
解决此问题的方法是在blur
回调中附加shake
事件,并在其中设置focus
。我真的不明白为什么focus
正在消失,这就是为什么blur
正在解雇。我希望这项工作可以帮助你。
正在使用 demo
$('input').effect('shake', function(){
$('input').focus();
$('input').blur(function () { console.log('BLUR!');
});
});
答案 2 :(得分:0)
<强> Live Demo 强>
var $focusElement;
// Keep track of the element that was focused
$(":input").focus(function () {
$focusElement = $(this);
});
$('input').focus();
$('input').blur(function () { console.log('BLUR!');
});
$('div').effect('shake', function(){
// Refocus the element
$focusElement.focus();
});
丑陋的黑客也发布了Shake effect kills focus,确定这是一个错误。