问题 关注焦点,重点关注


jQuery会阻止这种行为吗?

$("input").focusout(function() {
    $(this).focus();
});

5046
2018-06-20 21:28


起源

浏览器会阻止这样的行为。这不是jQuery的错。这是一项安全功能。 - William
+1为好问题 - Dmitriy Naumov
@Lime:一个非常值得怀疑的安全功能,如果ŠimeVidas的回答代表。 - Jon
正确的事件类型对是focusin / focusout和focus / blur。不要混合它们...... - Šime Vidas
@Jon好吧,如果不是安全功能,那么它确实可以防止无能的编码人员严重搞乱事情:)我只能想象有多么令人沮丧的事情.....点击什么?点击什么?点击什么?!??我已完成输入计算机!! - William


答案:


这是它的完成方式(跨浏览器工作):

$('input').blur(function() {
    var that = this;
    setTimeout(function() { $(that).focus(); }, 0);
});

现场演示:  http://jsfiddle.net/jzt2Z/1/


12
2018-06-20 21:48



男人,你是如此邪恶:))))+ 1 - Dmitriy Naumov
不错。好工作的人 - genesis
@Dmitriy强大的力量带来了巨大的责任 :) - Šime Vidas
如果增加计时器间隔会变得更加严重: jsfiddle.net/jzt2Z/3 - Dmitriy Naumov
@Dmitriy @Lime检查出来(尝试输入内容): jsfiddle.net/jzt2Z/6/show  :) - Šime Vidas


1)实际上它适用于Chrome。这是一个例子: http://jsfiddle.net/8WP53/

一旦第一次输入得到 focuseout  - 它仍然专注,用户无法关注任何其他输入

2)在IE中我得到一个错误“堆栈溢出”(品牌名称StackOverflow.com错误:) )

3)奇怪,但在Firefox中您可以选择任何输入,但不会产生错误


1
2018-06-20 21:35