本文主要為大家分享一篇即時監控文字方塊輸入字數的實例程式碼,具有很好的參考價值,希望對大家有幫助。一起跟著小編過來看看吧,希望能幫助大家。
需求:即時監控文字輸入框的字數,並加以限制

#1、即時監控目前輸入字數,直接使用onkeyup事件方法,給輸入框加maxlength屬性限制長度。如:
1 2 3 4 | <p>
<textarea id= "txt" maxlength= "10" ></textarea>
<p><span id= "txtNum" >0</span>/10</p>
</p>
|
登入後複製
1 2 3 4 5 | var txt = document.getElementById( "txt" );
var txtNum = document.getElementById( "txtNum" );
txt.addEventListener( "keyup" , function (){
txtNum.textContent = txt.value.length;
})
|
登入後複製
此時已可以完成基本的監控功能,存在的問題:當輸入英文時正常,但輸入中文時,監控的數字會隨拼音長度而變化。
2、解決方法:
compositionstart 事件觸發於一段文字的輸入之前(類似於keydown 事件,但該事件僅在若干可見字元的輸入之前,而這些可見字元的輸入可能需要一連串的鍵盤操作、語音辨識或點擊輸入法的備選字)。
compositionend 是對應的就是一段文字輸入的事件。
這兩個屬性有點類似於“開關”,如:開始進行中文輸入的拼音時開關打開,不在改變監測得到的長度數值,完整輸入一個或是一串文字後,開關關閉,得到監測的數值長度。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | var txt = document.getElementById( "txt" );
var txtNum = document.getElementById( "txtNum" );
var sw = false;
txt.addEventListener( "keyup" , function (){
if (sw == false){
countTxt();
}
});
txt.addEventListener( "compositionstart" , function (){
sw = true;
});
txt.addEventListener( "compositionend" , function (){
sw = false;
countTxt();
});
function countTxt(){
if (sw == false){
txtNum.textContent = txt.value.length;
}
}
|
登入後複製
在vue中的寫法:
template:
1 2 | <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:
1 2 3 | textContent: '' ,
conterNum: 0,
chnIpt: false,
|
登入後複製
methods:
1 2 3 4 5 6 7 8 9 10 11 12 13 | write() {
let self = this;
if (self.chnIpt == false) {
self.conterNum = self.textContent.length;
}
},
importStart() {
this.chnIpt = true;
},
importEnd() {
this.chnIpt = false;
this.write();
}
|
登入後複製
相關推薦:
html5中文字方塊輸入移除內容提示
禁止input文字方塊輸入實作屬性
js各種驗證文字方塊輸入格式(正規表示式)_表單特效
#
以上是即時監控文字方塊輸入字數詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!