这是我的html:
<div><input/></div>这是我的jQuery:
$('input').focus();
$('input').blur(function () { console.log('BLUR!'); });
$('div').effect('shake');请参阅http://jsfiddle.net/kN7tr/
在某种程度上,抖动效应触发了模糊事件。真烦人。有什么建议吗?
编辑:下面的情况类似于http://jsfiddle.net/kN7tr/1/
发布于 2011-09-02 01:23:12
经过一番挖掘,看起来这就是罪魁祸首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行-这条评论是误导性的,因为它指的是装潢师(与文字包装或其他任何东西无关))
小提琴有1.8.14,这是报告的错误。
此修复程序如1.8.16所示,可在Google上使用(显然,如果您下载了最新版本)。
发布于 2011-09-02 01:07:25
您可以在focus动画完成后将shake设置为输入。
$('div').effect('shake', function(){
$('input').focus();
});工作演示
这方面的工作是将blur事件附加到shake回调中,并在其中设置focus。我真的不明白为什么focus要消失了,这就是为什么blur在开火。我希望这件事对你有帮助。
工作演示
$('input').effect('shake', function(){
$('input').focus();
$('input').blur(function () { console.log('BLUR!');
});
});发布于 2011-09-02 02:33:27
现场演示
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();
});丑陋的黑客,这也是张贴在震颤效果杀死焦点,它是确定这是一个错误。
https://stackoverflow.com/questions/7278221
复制相似问题