我有一個移動模板,它是一個基於ajax/url哈希瀏覽的登錄表單。如果在iphone上用戶單擊iphone鍵盤上的「go」按鈕,則ajax會對其進行身份驗證/登錄,然後將下一頁加載到另一個div中並隱藏當前登錄表單div。javascript - unfocu一個文本框
問題是,在iphone上鍵盤仍然彈出。無論如何,通過JavaScript來忽略文本框元素?
我有一個移動模板,它是一個基於ajax/url哈希瀏覽的登錄表單。如果在iphone上用戶單擊iphone鍵盤上的「go」按鈕,則ajax會對其進行身份驗證/登錄,然後將下一頁加載到另一個div中並隱藏當前登錄表單div。javascript - unfocu一個文本框
問題是,在iphone上鍵盤仍然彈出。無論如何,通過JavaScript來忽略文本框元素?
如果您無法輕鬆訪問想要模糊的特定元素,那麼您可以實現「模糊所有」功能。
就某處添加以下HTML頁面上:
<input id="blur-hack" type="text" style="position: absolute; opacity: 0;">
那麼這個JS會以無焦點的當前聚焦什麼:
document.getElementById("blur-hack").focus();
注意,對於內嵌HTML樣式,我們不能做display: none
否則你不能專注於它。 position
和opacity
將充分地流動刪除元素 - 你也可以使用利潤率將它推遙遠的頁面等
或者你可以將'height'設置爲0 – Bill 2014-03-12 03:53:48
這是我使用時.blur()
並不想成爲我的朋友
function blurAll(){
var tmp = document.createElement("input");
document.body.appendChild(tmp);
tmp.focus();
document.body.removeChild(tmp);
}
這真棒,正是我所期待的。我喜歡這個答案,因爲它是獨立的,只是完成這一件事,並沒有留下任何混亂。 – thomasfuchs 2015-09-11 16:26:25
這樣可以保持滾動,並且不會造成元素的任何閃光
resetFocus() {
let scrollTop = document.body.scrollTop;
let body = document.body;
let tmp = document.createElement('input');
tmp.style.opacity = 0;
body.appendChild(tmp);
tmp.focus();
body.removeChild(tmp);
body.scrollTop = scrollTop;
}
基於@ skygoo的解決方案
建立在@shygoo的解決方案上 - 這很好地轉化爲TypeScript!
export function unfocus(): any {
const tmp: HTMLInputElement => document.createElement('input');
document.body.appendChild(tmp);
tmp.focus();
document.body.removeChild(tmp);
}
的一些注意事項...
any
型的,這樣它與AngularJS的$timeout
服務兼容,即使它實際上從未返回任何東西。tmp
是恆定的,因爲它在函數調用的生命週期中從不改變。
http://web-design.blogs.webucator.com/files/2010/08/onFocusTShirt.gif :-) – 2013-01-14 14:49:32