js實時監(jiān)控文本框輸入字數(shù)的實例代碼
需求:實時監(jiān)控文本輸入框的字數(shù),并加以限制
1、實時監(jiān)控當(dāng)前輸入字數(shù),直接使用onkeyup事件方法,給輸入框加maxlength屬性限制長度。如:
<div> <textarea id="txt" maxlength="10"></textarea> <p><span id="txtNum">0</span>/10</p> </div>
var txt = document.getElementById("txt"); var txtNum = document.getElementById("txtNum"); txt.addEventListener("keyup", function(){ txtNum.textContent = txt.value.length; })
此時已可以完成基本的監(jiān)控功能,存在的問題:當(dāng)輸入英文時正常,但輸入中文時,監(jiān)控的數(shù)字會隨拼音長度而變化。
2、解決方法:
compositionstart 事件觸發(fā)于一段文字的輸入之前(類似于 keydown 事件,但是該事件僅在若干可見字符的輸入之前,而這些可見字符的輸入可能需要一連串的鍵盤操作、語音識別或者點擊輸入法的備選詞)。
compositionend 就是對應(yīng)的就是一段文字輸入的事件。
這兩個屬性有點類似于“開關(guān)”,如:開始進行中文輸入的拼音時開關(guān)打開,不在改變監(jiān)測得到的長度數(shù)值,完整輸入一個或是一串文字后,開關(guān)關(guān)閉,得到監(jiān)測的數(shù)值長度。
var txt = document.getElementById("txt"); var txtNum = document.getElementById("txtNum"); var sw = false; //定義關(guān)閉的開關(guān) txt.addEventListener("keyup", function(){ if(sw == false){ countTxt(); } }); txt.addEventListener("compositionstart", function(){ sw = true; }); txt.addEventListener("compositionend", function(){ sw = false; countTxt(); }); function countTxt(){ //計數(shù)函數(shù) if(sw == false){ //只有開關(guān)關(guān)閉時,才賦值 txtNum.textContent = txt.value.length; } }
在vue中的寫法:
template:
<textarea name="suggestions-text" id="textarea" cols="30" rows="10" maxlength="300" v-on:keyup="write()" v-on:compositionstart="importStart()" v-on:compositionend="importEnd()" v-model="textContent"></textarea> <p class="counterNum">{{conterNum}}/300</p>
data:
textContent: '', conterNum: 0, chnIpt: false,
methods:
write() { let self = this; if (self.chnIpt == false) { self.conterNum = self.textContent.length; } }, importStart() { this.chnIpt = true; }, importEnd() { this.chnIpt = false; this.write(); }
以上這篇實時監(jiān)控文本框輸入字數(shù)的實例代碼就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- 關(guān)于angular js_$watch監(jiān)控屬性和對象詳解
- 監(jiān)控 url fragment變化的js代碼
- 使用javascript實現(xiàn)監(jiān)控視頻播放并打印日志
- JS監(jiān)控關(guān)閉瀏覽器操作的實例詳解
- JS實現(xiàn)監(jiān)控微信小程序的原理
- 使用Javascript監(jiān)控前端相關(guān)數(shù)據(jù)的代碼
- 使用Object.defineProperty實現(xiàn)簡單的js雙向綁定
- js中Object.defineProperty()方法的不詳解
- JavaScript的Object.defineProperty詳解
- JS使用對象的defineProperty進行變量監(jiān)控操作示例
相關(guān)文章
js如何構(gòu)造elementUI樹狀菜單的數(shù)據(jù)結(jié)構(gòu)詳解
由于業(yè)務(wù)需要,要求實現(xiàn)樹形菜單,且菜單數(shù)據(jù)由后臺返回,下面這篇文章主要給大家介紹了關(guān)于js如何構(gòu)造elementUI樹狀菜單的數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下2021-05-05bootstrap datepicker 與bootstrapValidator同時使用時選擇日期后無法正常觸發(fā)校驗的解
這篇文章主要介紹了bootstrap datepicker 與bootstrapValidator同時使用時選擇日期后無法正常觸發(fā)校驗的解決思路的相關(guān)資料,需要的朋友可以參考下2016-09-09javascript的事件觸發(fā)器介紹的實現(xiàn)
這篇文章主要介紹了javascript的事件觸發(fā)器介紹的實現(xiàn),本文所指觸發(fā)器是用程序來觸發(fā)綁定的事件,而不是人為的去觸發(fā),需要的朋友可以參考下2014-06-06