2013-04-05 77 views
0

我认为这将很容易做到没有寻求帮助,但我猜不是。添加autofocus =“true”标记在页面最初加载时起作用,但如果任何人在任何地方点击或打开链接,则文本字段会失去焦点。我如何强制该领域保持专注?保持文本字段的焦点

+3

你为什么要这么做? – 2013-04-05 19:40:15

+2

@MattBall会很烦人。 – Rohrbs 2013-04-05 19:42:38

+0

@mat - 有时*客户端*请求愚蠢,愚蠢的事情...你不能责怪程序员:) – Lix 2013-04-05 19:47:36

回答

1

将附加单击事件侦听器的文档上,单击焦点在输入框上。

$(document).on("click", function() 
{ 
    $("yourInputIdHERE").focus(); 
} 
1
$("#textbox").focus().on('blur', function() { 
    $(this).focus();    
}); 
+1

这是迄今为止最好的答案。你(OP)会想要绑定一个“onblur”事件,所以每次它失去焦点。它重新获得它。每个其他答案是最不可取的。 – sircapsalot 2013-04-05 19:43:53

+0

没有工作http://jsfiddle.net/BTmmb/ – computerquotes 2013-04-05 20:02:56

+0

再次尝试http://jsfiddle.net/BTmmb/3/ – 2013-04-05 20:14:00

0

你可能想尝试做的,是附加一个事件处理程序blur事件。一旦捕获它,您可以简单地在首先失去焦点的相同元素上触发焦点事件。

$("input").on('blur',function(){ 
    $(this).focus(); 
}); 

您可能需要某种形式的验证将这一这样,一旦用户输入的期望值,他们将能够离开文本字段。

$("input").on('blur',function(){ 
    var $this = $(this); 
    if ($this.val() == ''){ 
    $this.focus(); 
    showErrorMessage("Please enter a value"); 
    } 
}); 

如果不实现某种形式的标志来启用/禁用此行为,你将用户锁定到一个场永远。他们没有(简单)的方式移动到页面的不同区域。

Here is a small demo
你会发现,一旦文本字段具有焦点时,它会继续,直到一个值已输入。

+0

尝试没有工作http://jsfiddle.net/BTmmb/ – computerquotes 2013-04-05 20:01:11

+0

@com - 该示例doesn 't工作,因为你忘了放置'#'的id选择器,因为你没有包括jQuery :) [检查这个固定版本](http://jsfiddle.net/BTmmb/2/) – Lix 2013-04-05 20:02:11

+0

它已经重点时,它加载,但当我点击任何地方丢失它 – computerquotes 2013-04-05 20:04:58

1

处理所有情况下,一些事件被阻止传播到文档。还要处理用户切换选项卡并返回的情况。

$("#element").blur(function() 
{ 
    $("#element").focus(); 
}); 
$(document).bind('keydown mousedown mouseup click',function() 
{ 
    $("#element").focus(); 
}); 
2

有人问为什么你想这样做。 对的,当然答案是因为我们需要通过我们的客户:)

答案对付我们疯狂的需求一个开发商:

$(document).ready(function(){ 

    $(document).click(function() { $("<THE-ELEMENT>").focus() }); 
}); 

在这种情况下,我们添加监听到文档中的所有元素: )