2015-06-26 134 views
0

有沒有一種方法可以在沒有頁面滾動的情況下使用javascript焦點輸入。我希望在輸入字段中有光標開始,但我不希望它滾動到頁面的那一部分。使用javascript輸入焦點

目前

我使用

function setFocusToTextBox() { 
    document.getElementById("FirstName1").focus(); 
} 
+1

相反,爲什麼不在輸入焦點在視口中變爲可見狀態時才輸入焦點?這樣可以避免整個頁面跳轉到輸入問題,並提供更好的體驗。 – filoxo

+0

我該怎麼做? –

+0

這將是另一個問題的基礎,但是你必須[計算元素是否在視口之外](http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom -element-is-visible-in-the-current-viewport)(並且可能需要將此函數綁定到'window.scroll'事件),並且當元素不在視口之外時,已經在做。 – filoxo

回答

0

你可以滾動前再設置滾動後是這樣的:

function setFocusToTextBox() { 
    var doc = document.documentElement; 
    var x = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0); 
    var y = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0); 
    document.getElementById("FirstName1").focus(); 
    window.scrollTo(x, y); 
} 

代碼從這些環節採取:link1link2

你可以在focus之前獲取滾動位置,然後將其設置回恰當之後focus ...

+0

我目前正在嘗試它,頁面滾動到頂部,但在文本字段中沒有光標,所以我試圖通過你給我的東西並看看我是否做了不正確的事情。 –

+0

@AdamBuchananSmith我在我的機器上做了一個簡單的測試,它的工作原理...滾動保持在原來的位置,光標位於''字段中......也許你還有別的不同。我會爲你發一個小提琴。 – brso05

+0

@AdamBuchananSmith這裏是一個工作小提琴:https://jsfiddle.net/z17fa73e/3/ – brso05