解決input獲取焦點,彈出輸入法之後,input被遮擋的問題
關於input
輸入框fixed
在視窗底部的時候,input
獲取焦點,彈出輸入法,input
會被輸入法遮擋,導致輸入內容不方便。
我們可以用scrollIntoView
與 scrollIntoViewIfNeeded
來解決這個問題。scrollIntoView
與 scrollIntoViewIfNeeded
都是讓當前的元素滾動到瀏覽器視窗的可視區域內。關於scrollIntoView
與 scrollIntoViewIfNeeded
的具體資訊可以檢視 此處 。
取決於其它元素的佈局情況,此元素可能不會完全滾動到頂端或底端。
所以應用scrollIntoView
的時候並不一定會滾動到頂端和底端。
解決input
被遮擋的問題可以先點選此處檢視 例子 ,或者直接用手機掃描二維碼:
從例子中可以看到,每次點選input
輸入框之後,輸入法會優先彈出,300ms之後將input
輸入框滾動到瀏覽器視窗的可視區域內,輸入內容之後,點選確定,會在內容區域新增剛剛輸入的內容,並且在300ms之後將它滾動到瀏覽器視窗的可視區域內。
親測在安卓和ios下的微信6.6.7版本均有效。
例子程式碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>scrollIntoView</title>
<link rel="stylesheet" href="https://fxss5201.cn/project/css/normalize.css">
<style >
html,
body {
height: 100%;
font-family: "Microsoft YaHei", Arial, Helvetica, "宋體", sans-serif;
font-size: 14px;
user-select: none;
-webkit-touch-callout: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
.clearfix:before,
.clearfix:after {
content: '.';
display: block;
width: 0;
height: 0;
overflow: hidden;
visibility: hidden;
font-size: 0;
line-height: 0;
}
.clearfix:after {
clear: both;
}
.clearfix {
zoom: 1;
}
.header {
position: fixed;
left: 0;
top: 0;
z-index: 10;
width: 100%;
height: 50px;
line-height: 50px;
padding: 0 15px;
box-sizing: border-box;
color: #fff;
background: #999;
}
.body {
padding: 50px 15px;
width: 100%;
overflow-y: scroll;
box-sizing: border-box;
line-height: 30px;
}
.footer {
position: fixed;
left: 0;
bottom: 0;
z-index: 10;
width: 100%;
height: 50px;
padding: 8px 15px 9px;
box-sizing: border-box;
background: #fff;
border-top: 1px solid #ddd;
}
.sure-btn {
padding: 0;
float: right;
margin-left: 10px;
width: 50px;
height: 32px;
color: #fff;
font-size: 14px;
background: #0FAEFF;
border: 0;
border-radius: 3px;
-webkit-appearance: none;
}
.ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: normal;
}
.text-input {
box-sizing: border-box;
width: 100%;
height: 32px;
border-radius: 3px;
padding: 0 6px;
border: 1px solid #ddd;
-webkit-appearance: none;
}
</style>
</head>
<body>
<div class="header">header</div>
<div class="body" id="body">
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
body</br>
</div>
<div class="footer" id="footer">
<button class="sure-btn" id="sureBtn">確定</button>
<div class="ellipsis">
<input type="text" class="text-input" id="textInput">
</div>
</div>
<script src="https://fxss5201.cn/project/js/jquery-1.11.3.js"></script>
<script>
$(function () {
$("#textInput").on("focus", function () {
setTimeout(function () {
$("#textInput")[0].scrollIntoView();
$("#textInput")[0].scrollIntoViewIfNeeded();
}, 300);
});
$("#sureBtn").on("click", function () {
var textInputValur = $.trim($("#textInput").val());
$("#textInput").val("").focus();
var body = $("#body");
if (!textInputValur) {
return false;
}
var str = $('<span>' + textInputValur + '</span></br>');
body.append(str);
setTimeout(function () {
str[0].scrollIntoView();
str[0].scrollIntoViewIfNeeded();
}, 300);
})
})
</script>
</body>
</html>
相關推薦
解決input獲取焦點,彈出輸入法之後,input被遮擋的問題
關於input輸入框fixed在視窗底部的時候,input獲取焦點,彈出輸入法,input會被輸入法遮擋,導致輸入內容不方便。 我們可以用scrollIntoView 與 scrollIntoView
解決ios底部固定輸入框,獲取焦點時彈出輸入法鍵盤擋住輸入框
ios端比較常見的,就是在頁面底部固定的輸入框,如下,一旦獲取焦點,彈出的輸入法鍵盤就會把input輸入框完全擋住,解決方法很簡單,加上下面的幾行程式碼即可 $(".replay_text").on("click", functi
Android的EditText自動獲取焦點並彈出輸入法問題
1.每次啟動新的Activity的時候,輸入法總是彈出來,太煩人了。 主要原因就是頁面上方有個EditTexit,每次都自動獲取焦點。 注意要求是:每次啟動新的Activity的時候,EditTexit不要獲取到焦點或者獲取到焦點也不讓輸入法彈出來,並不是阻止輸入法使用。只
開啟app後Edittext自動獲取焦點並彈出輸入法的方法
方法1.: 呼叫程式碼: //自動彈出鍵盤 InputMethodManager inputManager = (InputMethodManager) getApplication().getSystemService(Context.INPUT_METHOD_SERV
彈出輸入法鍵盤,標題欄上移消失問題解決
當你做聊天或者評論類的佈局的時候,肯定會用到輸入框,而且輸入框一般都會在最底端,這個時候當你輸入的時候,系統會彈出輸入法鍵盤。輸入法鍵盤其實是一個dialog,因為它佔用空間,所以不得不讓我們自己的介面進行調整,一般調整會有兩個策略。第一個讓輸入法遮擋我們的
ios11,彈出層內的input框光標錯位 鍵盤彈出時,輸入信息,光標一直亂跳
樣式表 手機屏幕 return 底部 offset 情況 輸入框 fix win 之前開發了一個微信項目,維護期中蘋果手機突然出現光標錯位現象,經過排查,發現是最新的ios11系統的鍋。 具體情況:彈出層使用position: fixed;彈出層內附帶input/
EditText獲取焦點不彈出InputWindow
原文連結:https://stackoverflow.com/questions/10200950/android-edittext-inputtype-none-doesnt-work-becomes-textmultiline 獲取焦點時不彈inputwindow Step 1:
C#:點選按鈕,彈出輸入框,輸入並獲取內容
1.起因 一開始是直接用 TextBox接收使用者的輸入內容,但是有時候不想在窗體上加控制元件,所以就想到了另一種辦法,彈出一個輸入框,輸入並獲取內容,之後輸入框又消失不見,不佔位置。 2.用法 先要在專案中引入框架 Microsoft.VisualStudio
android EditText 自動獲取焦點並彈出軟鍵盤
話不多說,直接上程式碼! EditText e; e=(EditText)findViewById(R.id.editText); //獲取焦點 e.setFocusable(true); e.setFocusableI
android AlertDialog中的Edittext自動獲取焦點並彈出軟鍵盤
private void confirmPhoneGurdPswd(final String guardPswd) { // 1.建立彈出式對話方塊 final AlertDialog.Builder alertDialog = ne
layui彈出層layer過大被遮擋解決辦法-resize事件自動調整
思路 pla title 位置 相關 無法 dex 前端 情況 遇到的問題 ??最近在使用layui做一個管理系統,由於前端技術有限,在開發過程中也遇到這樣那樣的問題,即比較簡單的問題有時也要搞半天。。??layer彈出窗口在彈出時指定了area,彈出後,如果當前頁面(if
解決archlinux中fcitx配置中不能調出任何輸入法,與調出輸入法之後,不能啟用使用的問題
前提,安裝了: # sudo pacman -S fcitx # sudo pacman -S fcitx-im # sudo pacman -S fcitx-configtool # sudo pacman -S fcitx-sogoupinyin 根據Fcitx (簡體中文), 我是gn
彈出訊息提示框,彈出確認取消,彈出物品獲得提示框
一、 彈出提示框 Globals.MUIManager.CreatMessageLabel("支付失敗"); public T GetUI<T>() where T : HotFix_Project.UI.UI_Logic
移動web頁面,input獲取焦點彈出系統虛擬鍵盤時,擋住input的解決方案
移動頁面寫定位時不用fixed定位 const brand = navigator.userAgent.indexOf(‘Android’) if (brand > -1) { const maxHeight = document.body.cl
iOS下Html頁面中input獲取焦點彈出鍵盤時擋住input解決方案—scrollIntoView()
scrollIntoView(alignWithTop): 滾動瀏覽器視窗或容器元素,以便在當前視窗的可見範圍看見當前元素。 alignWithTop 若為 true,或者什麼都不傳,那麼視窗
移動端解決fixed和input獲取焦點軟鍵盤彈出影響定位的問題
場景描述, 當document的高度不夠window的高度時候,如在ip6中文件的高度比窗體的高度小,到底設計在最下方的區域沒有在窗體最下方,就留有空白地方如下圖的灰色部分 1、 解決初始化文件高度,讓文件高度等於窗體高度,並fixed需要定位的區域在最下方(functi
Android開發之使一開啟activity等介面Edittext獲取焦點,彈出軟鍵盤java程式碼實現
// 獲取編輯框焦點 editText.setFocusable(true); //開啟軟鍵盤 IInputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVI
bootstrap-modal:彈出modal時input的checked的狀態無法改變 | | input獲取焦點不生效
1.每次彈出modal時 ,用 js 修改的 checked 狀態不能實時更新 <div class="modal fade" tabindex="-1" role="dialog">
ListView裡面有EditText,彈出鍵盤後EditView立刻不能獲取焦點的問題
遇到的問題是點選EditText,鍵盤彈出後,輸入游標會消失,需要再點選一次才能獲取游標,這個大概是因為listview不能很好的處理EditText作為item的情況,彈出鍵盤後應該view是重新生成
移動端fixed和input獲取焦點軟鍵盤彈出影響定位的問題
在移動端使用fixed將按鈕定位在底部時,當input獲取焦點彈出軟鍵盤時,在安卓系統會獎底部的按鈕頂上去 // 檢測瀏覽器的resize事件,當高度過小時就可以判定為出現這種情況,這時把定位改成ab或者直接隱藏掉之類的。 var h = document.body.sc