###需求背景
####設想1:使用textarea實現 將textarea的高度設定成auto,overflow設定成visible。**如下:
複製**
但是經過測試,textarea實際上將是預設的高度,隨著輸入的增多會出現滾動條,並沒有達到我們想要的效果。
####設想2:contenteditable 我們知道可以將div的contenteditable設定偽true,將其變為可輸入狀態。**如下:
"true">
複製**
這樣就滿足了我們的第乙個需求——高度自適應。但是在手機上測試會發現第乙個問題,ios上面無法輸入。經過查詢資料,發現只需要為其新增如下樣式即可:
div
複製**
###placeholder 通過contenteditable方法實現的輸入框無法新增placeholder。
#####使用css模擬placeholder
// html
"true" data-placeholder="請輸入手機號碼">
// less
div &:not(:empty)
}}複製**
但是經過測試在不同手機上面變現不一致,所以放棄了這種方案(猜測可能和:not偽類的相容有關,還沒有做驗證)。
#####使用css+js實現 placeholder
思路:根據輸入通過動態新增class,模擬placeholder的行為。
// html
"input-item empty" contenteditable="true" data-placeholder="請輸入手機號碼">
// less
.input-item
}// js
$('.input-item').on('keyup',function
()})
複製**
到此,我們已經實現了第二個需求——可以設定placeholder
####maxlength
同樣的,我們也不能通過直接設定maxlength來滿足需求。所以通過箭筒keyup事件來實時計算長度。
$('.input-item').on('keyup',function(event)
})複製**
以上**看上去沒有問題,但是會發現游標會跑到最前方,這樣就會造成不好的使用者體驗,甚至出現bug。所以在擷取了最大長度的使用者輸入後,我們還需要將游標放到最後。完整**如下:
$('.input-item').on('keyup',function(event)
else
}})複製**
到此為止,乙個可以自動增加高度,並且支援placeholder和maxlength的輸入框就大功告成了。 實現乙個高度自適應的輸入框
有placeholder,輸入為空時,顯示placeholder 可設定maxlength 將textarea的高度設定成auto,overflow設定成visible。如下 height auto overflow x visible overflow y visible width 300px ...
高度自適應的輸入框
有時候我們需要乙個高度能隨內容自動增加的輸入框,input顯然不行,因為input裡的文字是不換行的。文字域textarea裡的文字倒是換行的,可一旦文字內容超過其高度,textarea就會增加乙個煩人的滾動條,這是很影響視覺的,就如同下面 那麼有沒有辦法製作乙個高度能隨文字內容自動增加的輸入框呢?...
輸入框自適應輸入的內容
我的需求是 每次輸出英文分號 就把輸入框的長度增加。import react,from react import from react const inputdata setinputdata usestate 輸入框的內容 const length setlength usestate 316 初...