文本框倒敘輸入讓輸入框的焦點始終在最開始的位置
所謂的文本框倒敘輸入是指輸入框的焦點始終在最開始的位置,如圖所示,當(dāng)我輸入123456789時,在輸入框上顯示的是987654321。
為什么要做這個Demo?是因為在項目中遇到了,項目需求是兩個輸入框,一個正序輸入,另一個倒敘輸入。 下面我把實現(xiàn)的思路和代碼寫出來。
文本倒敘輸入:
只要我們保證輸入框的焦點始終在第一位,這樣的話就可以實現(xiàn)每次我們輸入的都在最前面,即倒敘
代碼:
function setPosition(ctrl, pos) { //設(shè)置光標(biāo)位置函數(shù) if (ctrl.setSelectionRange) { ctrl.focus(); ctrl.setSelectionRange(pos, pos); } else if (ctrl.createTextRange) { var range = ctrl.createTextRange(); //創(chuàng)建一個選擇區(qū)域 range.collapse(true); //將光標(biāo)移動到選擇區(qū)域的開始位置 range.moveEnd('character', pos); //改變選擇區(qū)域結(jié)束的位置 range.moveStart('character', pos); //改變選擇區(qū)域開始的位置 range.select(); //將選擇的內(nèi)容同步到當(dāng)前的對象 } }
只要我們將參數(shù)pos設(shè)為0就可以了。
下面是一個完整的Demo,這個Demo實現(xiàn)了正常刪除和倒敘輸入。
<!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <style> .content { width: 300px;margin:0 auto;margin-top:50px; } ul { list-style: none; } .elem { width: 200px; } </style> <script src="http://cdn.staticfile.org/jquery/2.1.1-rc2/jquery.min.js"></script> </head> <body> <div style=""> <ul> <li> <input type="text" class="elem"> </li> <li> <input type="text" class="elem"> </li> <li> <input type="text" class="elem"> </li> </ul> </div> <script> function setPosition(ctrl, pos) { //設(shè)置光標(biāo)位置函數(shù) if (ctrl.setSelectionRange) { ctrl.focus(); ctrl.setSelectionRange(pos, pos); } else if (ctrl.createTextRange) { var range = ctrl.createTextRange(); //創(chuàng)建一個選擇區(qū)域 range.collapse(true); //將光標(biāo)移動到選擇區(qū)域的開始位置 range.moveEnd('character', pos); //改變選擇區(qū)域結(jié)束的位置 range.moveStart('character', pos); //改變選擇區(qū)域開始的位置 range.select(); //將選擇的內(nèi)容同步到當(dāng)前的對象 } } $('.elem').on('keypress keyup', function() { if(event.keyCode === 8) return; setPosition(this,0); }); </script> </body> </html>
另外在附上相關(guān)的獲取焦點位置的函數(shù),可能你會用到
function getPosition(ctrl) { // IE Support var CaretPos = 0; if (document.selection) { ctrl.focus(); var Sel = document.selection.createRange(); Sel.moveStart('character', -ctrl.value.length); CaretPos = Sel.text.length; } // Firefox support else if (ctrl.selectionStart || ctrl.selectionStart == '0') CaretPos = ctrl.selectionStart; return (CaretPos); }
總結(jié):
實現(xiàn)了設(shè)置和獲取文本輸入焦點,我們就可以做一些其他的特效,比如刪除一整個單詞或者變量等等。
如果你有關(guān)于此文的好想法,可以@me,希望此文能夠幫助你!
相關(guān)文章
動態(tài)加載圖片路徑 保持JavaScript控件的相對獨立性
根據(jù)新界面的要求,需要一部分圖片來增強日期控件的美觀性??紤]到既要實現(xiàn)加載圖表的目標(biāo),又要保持控件的獨立性以便將來的移植。2010-09-09JavaScript常用數(shù)組操作方法,包含ES6方法
這篇文章主要介紹了JavaScript常用數(shù)組操作方法,包含ES6方法,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒借鑒價值,需要的朋友可以參考下2018-09-09js中如何復(fù)制一個數(shù)組(淺復(fù)制、深復(fù)制)
這篇文章主要介紹了js中如何復(fù)制一個數(shù)組(淺復(fù)制、深復(fù)制)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04javascript讀取文本節(jié)點方法小結(jié)
本篇文章主要介紹了javascript讀取文本節(jié)點的方法,具有很好的參考價值,需要的朋友一起來看下吧2016-12-12一步快速解決微信小程序中textarea層級太高遮擋其他組件
這篇文章主要給大家介紹了關(guān)于如何通過一步快速解決微信小程序中textarea層級太高遮擋其他組件問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03