为什么自我焦点不能在javascript中运行?

时间:2012-05-04 06:42:27

标签: javascript jquery javascript-events

每当从任何输入元素触发模糊事件时,我想将焦点设置为一个特定元素。

当我尝试关注触发blur事件的同一元素时会出现此问题。

为什么这个只能运作,当我想要关注的元素是 时触发事件的那个?< / p>

  

[Issue Illustration]    并按照小提琴的解释:

     
      
  • 我要关注的元素是col0
  •   
  • 除非触发模糊事件的元素不是 col0 ,否则它将完美无缺
  •   
  • 但是当col0本身触发模糊时,$("#col0").focus()无效。
  •   

问:为什么? &安培;什么是变通方法/解决方案?

P.S:我只是想知道行为的原因和克服它的方法。对可用性的担忧是不是问题

2 个答案:

答案 0 :(得分:0)

这适用于我...

$('input').on('blur', function() {
    setTimeout(function () { $("#col0").focus(); }, 0);
});

只是推迟了UI动作(处理模糊事件完成后)。

jsfiddle FF中的

警告:不允许您在尝试后编辑代码,一旦进入输入,您就会被卡在那里直到刷新

更新:解释很棘手,因为它是FF中的实现问题(因为Chrome和IE的行为与您预期的一样),我的猜测是FF可以防止在您进入时触发相关事件同一元素的事件处理程序(可能导致无限循环的事情),使用setTimeout,您在离开处理程序后很快就会触发事件(甚至UI都有机会重绘自己)

答案 1 :(得分:0)

看起来你正试图把注意力集中在除你正在使用的控制之外的所有事情上。试试这个:

$('input:not(#idofcontrol)').blur(function() {
    $('#idofcontrol').focus();
});