JavaScript實現(xiàn)的仿新浪微博原生態(tài)輸入字?jǐn)?shù)即時檢查功能【兼容IE6】
本文實例講述了JavaScript實現(xiàn)的仿新浪微博原生態(tài)輸入字?jǐn)?shù)即時檢查功能。分享給大家供大家參考,具體如下:
邊在文本框輸入字符邊對輸入的字?jǐn)?shù)進(jìn)行檢查本來不難的,但是由于其中有些函數(shù)的使用方式大家容易混亂,很容易導(dǎo)致整個結(jié)果搞來搞去也沒有搞出來,也容易出Bugs,注意這里不能再使用length函數(shù)了,因為這個東西英文算一個字符,漢字也算一個字符,不符合數(shù)據(jù)傳遞的形式。也不能用OnChange事件了,這事件要光標(biāo)離開為文本框才會觸發(fā),必須改成更加即時的OnKeyUp。
一、基本目標(biāo)
如下圖,完成一個仿新浪微博的,不用任何插件,純Javascript無JQuery的帶字?jǐn)?shù)統(tǒng)計的輸入框,如果超出字?jǐn)?shù)則給出相應(yīng)的提示。
英文算半個字,中文才算1個字。

二、基本布局
沒什么好說的。主要是提示文字給一個ID=test,字?jǐn)?shù)統(tǒng)計的地方因為時時變更,因此也要給出一個ID=wordLength,之后腳本處的inputTest函數(shù),又文本框的onkeyup事件觸發(fā),同時把自己此刻的值傳遞過去。同時注意到,字?jǐn)?shù)統(tǒng)計的地方之所以與新浪微博的部分相似,就是因為新浪微博那里用了Georgia字體,這字體顯示的數(shù)字比較獨特。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>輸入字?jǐn)?shù)檢查</title> </head> <body> <p id="test"></p> <span><input type="text" onkeyup="inputTest(this.value)" placeholder="請在此輸入" /></span><span id="wordLength" style="font-family:Georgia;">0/10</span> </body> </html>
三、核心腳本
<script>
//獲取長度函數(shù)
//這里不能用封裝好的方法,因為length方法,英文算一個字符,中文也算一個字符
function getStrLength(str){
//傳遞一個字符串過來
var mylen=0;
//遍歷這個字符串
for(var i=0;i<str.length;i++){
//如果字符串的第i個字符的Unicode碼在0-128之間就是英文字符,應(yīng)該算一個長度
if(str.charCodeAt(i)>0&&str.charCodeAt(i)<128){
mylen++;
}else{
//否則算兩個長度
mylen+=2;
}
}
return mylen;
}
//輸入當(dāng)字符數(shù)變更就觸發(fā)這個函數(shù)
function inputTest(value){
//先調(diào)getStrLength用統(tǒng)計當(dāng)前文本框中所含文本的值,因為getStrLength統(tǒng)計出來的東西是英文字符長度,所以要除以2,強(qiáng)行轉(zhuǎn)換為整形
//再補上/10替換wordLength中的文本,/應(yīng)該被轉(zhuǎn)義,否則在某些編譯器中無法通過,例如Dreamwaver
document.getElementById("wordLength").innerHTML=parseInt(getStrLength(value)/2)+"\/10";
//如果超過10個字,20個字符
if(parseInt(getStrLength(value))>20){
//那么把警告內(nèi)容顯示出來,并把其中的顏色設(shè)置為紅色,當(dāng)然,你在HTML那里設(shè)置也可以
document.getElementById("test").style.display="block";
document.getElementById("test").innerHTML="太長,請修改至10字之內(nèi)";
document.getElementById("test").style.color="#ff0000";
}
else{
//否則隱藏警告內(nèi)容
document.getElementById("test").innerHTML="";
document.getElementById("test").style.display="none";
}
}
</script>
PS:這里再為大家推薦2款功能相似的在線工具:
在線字?jǐn)?shù)統(tǒng)計工具:
http://tools.jb51.net/code/zishutongji
在線字符統(tǒng)計與編輯工具:
http://tools.jb51.net/code/char_tongji
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)學(xué)運算用法總結(jié)》、《JavaScript中json操作技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript遍歷算法與技巧總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
- JavaScript輸入框字?jǐn)?shù)實時統(tǒng)計更新
- js實時計算字?jǐn)?shù)提醒的文本框
- JavaScript中統(tǒng)計Textarea字?jǐn)?shù)并提示還能輸入的字符
- Javascript實現(xiàn)字?jǐn)?shù)統(tǒng)計
- JavaScript實現(xiàn)統(tǒng)計文本框Textarea字?jǐn)?shù)增強(qiáng)用戶體驗
- js實現(xiàn)多行文本框統(tǒng)計剩余字?jǐn)?shù)功能
- js實現(xiàn)textarea限制輸入字?jǐn)?shù)
- JavaScript動態(tài)提示輸入框輸入字?jǐn)?shù)的方法
- js判斷文本框剩余可輸入字?jǐn)?shù)的方法
- JS控制文本框textarea輸入字?jǐn)?shù)限制的方法
相關(guān)文章
javascript使用正則控制input輸入框允許輸入的值方法大全
在做項目的時候,我們經(jīng)常會遇到控制input輸入框允許輸入的值為數(shù)字,字母,漢字或者混排的情況,那么我們怎么來處理呢,下面我們就來探討怎么通過用javascript正則來實現(xiàn)2014-06-06
基于Arcgis for javascript實現(xiàn)百度地圖ABCD marker的效果
本篇文章由腳本之家小編給大家分享的基于Arcgis for javascript實現(xiàn)百度地圖ABCD marker的效果,需要的朋友一起學(xué)習(xí)吧2015-09-09
《JavaScript DOM 編程藝術(shù)》讀書筆記之JavaScript 圖片庫
這篇文章主要介紹了《JavaScript DOM 編程藝術(shù)》讀書筆記之JavaScript 圖片庫,需要的朋友可以參考下2015-01-01
微信小程序?qū)崿F(xiàn)單個卡片左滑顯示按鈕并防止上下滑動干擾功能
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)單個卡片左滑顯示按鈕并防止上下滑動干擾功能,利用小程序事件處理的api,分別讀取觸摸開始,觸摸移動時,觸摸結(jié)束的X/Y坐標(biāo),根據(jù)差值來改變整個卡片的位置,具體實例代碼跟隨小編一起看看吧2019-12-12

