2010-09-10 123 views
1

我有一個用戶用於輸入網頁表單的閃光鍵盤(不是我寫的,我知道沒有閃光燈)。鍵盤工作正常,我可以正確填寫字段。即使設置了焦點,也無法輸入文本框

當鍵盤模糊任何字段時,我滾動文檔(在EnsureNotObscured()方法中),以便輸入字段不被遮擋。這是我得到這個問題的地方。滾動文檔後,我可以看到輸入字段仍然有焦點(光標閃爍),但是當我輸入什麼都沒有出現。

如果我再次在該字段中單擊鼠標,那麼我可以輸入該字段。什麼可能是這種行爲的原因?我甚至嘗試在使用EnsureNotObscured()滾動文檔之後使用 document.getElementById(field.id).focus()明確地設置焦點,但它仍然不起作用。我甚至嘗試過模糊場地,然後設定焦點,但沒有成功。

+0

如果將焦點置於另一個字段然後回到原始位置,會發生什麼情況? – 2010-09-10 14:24:41

+0

與模糊並將焦點重新放在場上不一樣嗎? – user281693 2010-09-10 14:29:33

+0

是的,我錯過了那一點。 – 2010-09-10 15:03:59

回答

2

我明白了。我通過模糊領域並在超時後將焦點設置回來了。我不能在這裏寫下它爲什麼工作,因爲它涉及我們自己的JavaScript框架。謝謝你的時間。

+0

我知道這是舊消息,但我只想說感謝!我一直在研究一個與此非常相似的愚蠢問題,從來沒有想過先模糊它,然後專注它。這對我有用!再次感謝! – 2011-03-14 15:42:00

1

在所有瀏覽器中都發生這種相同的行爲嗎?我知道我以前遇到過問題,並在IE中使用鼠標滾輪進行滾動,但如果我沒有記錯,這個問題在其他瀏覽器中不會發生。

如果它只是IE瀏覽器,我可能會挖掘一些代碼,我不得不解決這個問題。

+0

是的,它的IE瀏覽器。我還沒有在其他瀏覽器中測試過。那麼我不能說爲什麼它只有IE瀏覽器,但它會很好,如果你可以提供一些建議 – user281693 2010-09-10 14:46:37

+0

所以你可以在其他瀏覽器中測試,並讓我們知道是否出現相同的問題? – Hawz 2010-09-10 14:59:29

+0

嗯,我不能,這個應用程序運行在我們自己的運行IE瀏覽器的專有env。沒有其他瀏覽器。謝謝。 – user281693 2010-09-10 15:03:48

0

可怕的是一個答案是這裏竟然必需的,但這裏是使這個可愛的文本框問題消失了IE8安全的方式:

/// <summary> 
    /// Sets focus to a control using either the Page or ScriptManager method depending on which is available. 
    /// </summary> 
    /// <param name="control"></param> 
    public static void SetFocus(WebControl control) 
    { 
     string javaScript = String.Format("setTimeout(function() {{ $get('{0}').blur(); setTimeout(function() {{ $get('{0}').focus(); }}, 1); }}, 1);", control.ClientID); 
     [ClientScript or ScriptManager].RegisterStartupScript(control, control.GetType(), "setFocus", javaScript, true); 
    } 

編碼愉快。

Brian

0

只需要照顧z-index屬性。坐落在這樣的z-index,使文本框應在頂部

0

我會幫助大家通過user281693給出了答案的代碼 -

jQuery(element).blur(); 
setTimeout((function(){ 
    jQuery(element).focus(); 
}),100) 

其中元素是你的文本框。