2013-04-05 153 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() }); 
}); 

在這種情況下,我們添加監聽到文檔中的所有元素: )