js實(shí)時(shí)監(jiān)控文本框輸入字?jǐn)?shù)的實(shí)例代碼
需求:實(shí)時(shí)監(jiān)控文本輸入框的字?jǐn)?shù),并加以限制

1、實(shí)時(shí)監(jiān)控當(dāng)前輸入字?jǐn)?shù),直接使用onkeyup事件方法,給輸入框加maxlength屬性限制長(zhǎng)度。如:
<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;
})
此時(shí)已可以完成基本的監(jiān)控功能,存在的問題:當(dāng)輸入英文時(shí)正常,但輸入中文時(shí),監(jiān)控的數(shù)字會(huì)隨拼音長(zhǎng)度而變化。
2、解決方法:
compositionstart 事件觸發(fā)于一段文字的輸入之前(類似于 keydown 事件,但是該事件僅在若干可見字符的輸入之前,而這些可見字符的輸入可能需要一連串的鍵盤操作、語(yǔ)音識(shí)別或者點(diǎn)擊輸入法的備選詞)。
compositionend 就是對(duì)應(yīng)的就是一段文字輸入的事件。
這兩個(gè)屬性有點(diǎn)類似于“開關(guān)”,如:開始進(jìn)行中文輸入的拼音時(shí)開關(guān)打開,不在改變監(jiān)測(cè)得到的長(zhǎng)度數(shù)值,完整輸入一個(gè)或是一串文字后,開關(guān)關(guān)閉,得到監(jiān)測(cè)的數(shù)值長(zhǎng)度。
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(){ //計(jì)數(shù)函數(shù)
if(sw == false){ //只有開關(guān)關(guān)閉時(shí),才賦值
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();
}
以上這篇實(shí)時(shí)監(jiān)控文本框輸入字?jǐn)?shù)的實(shí)例代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 關(guān)于angular js_$watch監(jiān)控屬性和對(duì)象詳解
- 監(jiān)控 url fragment變化的js代碼
- 使用javascript實(shí)現(xiàn)監(jiān)控視頻播放并打印日志
- JS監(jiān)控關(guān)閉瀏覽器操作的實(shí)例詳解
- JS實(shí)現(xiàn)監(jiān)控微信小程序的原理
- 使用Javascript監(jiān)控前端相關(guān)數(shù)據(jù)的代碼
- 使用Object.defineProperty實(shí)現(xiàn)簡(jiǎn)單的js雙向綁定
- js中Object.defineProperty()方法的不詳解
- JavaScript的Object.defineProperty詳解
- JS使用對(duì)象的defineProperty進(jìn)行變量監(jiān)控操作示例
相關(guān)文章
js將列表組裝成樹結(jié)構(gòu)的兩種實(shí)現(xiàn)方式分享
最近做的任務(wù)提了新的需求,需要實(shí)現(xiàn)一個(gè)樹形結(jié)構(gòu),所以下面這篇文章主要給大家介紹了關(guān)于js將列表組裝成樹結(jié)構(gòu)的兩種實(shí)現(xiàn)方式,需要的朋友可以參考下2022-01-01
JavaScript判斷是否為數(shù)組的3種方法及效率比較
這篇文章主要介紹了JavaScript判斷是否為數(shù)組的3種方法及效率比較,本文直接給出運(yùn)行效果和實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04
微信小程序?qū)崙?zhàn)之雙人五子棋游戲是實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了如何利用微信小程序?qū)崿F(xiàn)雙人五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
JS實(shí)現(xiàn)iframe自適應(yīng)高度的方法示例
這篇文章主要介紹了JS實(shí)現(xiàn)iframe自適應(yīng)高度的方法,結(jié)合實(shí)例形式分析了JS實(shí)現(xiàn)iframe高度自適應(yīng)的實(shí)現(xiàn)技巧,并給出了項(xiàng)目示例供大家參考,需要的朋友可以參考下2017-01-01
深入理解JavaScript系列(12) 變量對(duì)象(Variable Object)
JavaScript編程的時(shí)候總避免不了聲明函數(shù)和變量,以成功構(gòu)建我們的系統(tǒng),但是解釋器是如何并且在什么地方去查找這些函數(shù)和變量呢2012-01-01
JavaScript 檢測(cè)瀏覽器和操作系統(tǒng)的腳本
代碼轉(zhuǎn)自《Professional JavaScript™ for Web Developers》一書。2008-12-12
JavaScript實(shí)現(xiàn)開關(guān)等效果
本文給大家分享一段簡(jiǎn)單的代碼基于js實(shí)現(xiàn)開關(guān)燈效果,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-09-09

