JavaScript實(shí)現(xiàn)的仿新浪微博原生態(tài)輸入字?jǐn)?shù)即時(shí)檢查功能【兼容IE6】
本文實(shí)例講述了JavaScript實(shí)現(xiàn)的仿新浪微博原生態(tài)輸入字?jǐn)?shù)即時(shí)檢查功能。分享給大家供大家參考,具體如下:
邊在文本框輸入字符邊對(duì)輸入的字?jǐn)?shù)進(jìn)行檢查本來(lái)不難的,但是由于其中有些函數(shù)的使用方式大家容易混亂,很容易導(dǎo)致整個(gè)結(jié)果搞來(lái)搞去也沒(méi)有搞出來(lái),也容易出Bugs,注意這里不能再使用length函數(shù)了,因?yàn)檫@個(gè)東西英文算一個(gè)字符,漢字也算一個(gè)字符,不符合數(shù)據(jù)傳遞的形式。也不能用OnChange事件了,這事件要光標(biāo)離開(kāi)為文本框才會(huì)觸發(fā),必須改成更加即時(shí)的OnKeyUp。
一、基本目標(biāo)
如下圖,完成一個(gè)仿新浪微博的,不用任何插件,純Javascript無(wú)JQuery的帶字?jǐn)?shù)統(tǒng)計(jì)的輸入框,如果超出字?jǐn)?shù)則給出相應(yīng)的提示。
英文算半個(gè)字,中文才算1個(gè)字。
二、基本布局
沒(méi)什么好說(shuō)的。主要是提示文字給一個(gè)ID=test,字?jǐn)?shù)統(tǒng)計(jì)的地方因?yàn)闀r(shí)時(shí)變更,因此也要給出一個(gè)ID=wordLength,之后腳本處的inputTest函數(shù),又文本框的onkeyup事件觸發(fā),同時(shí)把自己此刻的值傳遞過(guò)去。同時(shí)注意到,字?jǐn)?shù)統(tǒng)計(jì)的地方之所以與新浪微博的部分相似,就是因?yàn)樾吕宋⒉┠抢镉昧薌eorgia字體,這字體顯示的數(shù)字比較獨(dú)特。
<!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="請(qǐng)?jiān)诖溯斎? /></span><span id="wordLength" style="font-family:Georgia;">0/10</span> </body> </html>
三、核心腳本
<script> //獲取長(zhǎng)度函數(shù) //這里不能用封裝好的方法,因?yàn)閘ength方法,英文算一個(gè)字符,中文也算一個(gè)字符 function getStrLength(str){ //傳遞一個(gè)字符串過(guò)來(lái) var mylen=0; //遍歷這個(gè)字符串 for(var i=0;i<str.length;i++){ //如果字符串的第i個(gè)字符的Unicode碼在0-128之間就是英文字符,應(yīng)該算一個(gè)長(zhǎng)度 if(str.charCodeAt(i)>0&&str.charCodeAt(i)<128){ mylen++; }else{ //否則算兩個(gè)長(zhǎng)度 mylen+=2; } } return mylen; } //輸入當(dāng)字符數(shù)變更就觸發(fā)這個(gè)函數(shù) function inputTest(value){ //先調(diào)getStrLength用統(tǒng)計(jì)當(dāng)前文本框中所含文本的值,因?yàn)間etStrLength統(tǒng)計(jì)出來(lái)的東西是英文字符長(zhǎng)度,所以要除以2,強(qiáng)行轉(zhuǎn)換為整形 //再補(bǔ)上/10替換wordLength中的文本,/應(yīng)該被轉(zhuǎn)義,否則在某些編譯器中無(wú)法通過(guò),例如Dreamwaver document.getElementById("wordLength").innerHTML=parseInt(getStrLength(value)/2)+"\/10"; //如果超過(guò)10個(gè)字,20個(gè)字符 if(parseInt(getStrLength(value))>20){ //那么把警告內(nèi)容顯示出來(lái),并把其中的顏色設(shè)置為紅色,當(dāng)然,你在HTML那里設(shè)置也可以 document.getElementById("test").style.display="block"; document.getElementById("test").innerHTML="太長(zhǎng),請(qǐng)修改至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)計(jì)工具:
http://tools.jb51.net/code/zishutongji
在線字符統(tǒng)計(jì)與編輯工具:
http://tools.jb51.net/code/char_tongji
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript中json操作技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript遍歷算法與技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JavaScript輸入框字?jǐn)?shù)實(shí)時(shí)統(tǒng)計(jì)更新
- js實(shí)時(shí)計(jì)算字?jǐn)?shù)提醒的文本框
- JavaScript中統(tǒng)計(jì)Textarea字?jǐn)?shù)并提示還能輸入的字符
- Javascript實(shí)現(xiàn)字?jǐn)?shù)統(tǒng)計(jì)
- JavaScript實(shí)現(xiàn)統(tǒng)計(jì)文本框Textarea字?jǐn)?shù)增強(qiáng)用戶體驗(yàn)
- js實(shí)現(xiàn)多行文本框統(tǒng)計(jì)剩余字?jǐn)?shù)功能
- js實(shí)現(xiàn)textarea限制輸入字?jǐn)?shù)
- JavaScript動(dòng)態(tài)提示輸入框輸入字?jǐn)?shù)的方法
- js判斷文本框剩余可輸入字?jǐn)?shù)的方法
- JS控制文本框textarea輸入字?jǐn)?shù)限制的方法
相關(guān)文章
JavaScript SHA1加密算法實(shí)現(xiàn)詳細(xì)代碼
這篇文章主要為大家詳細(xì)介紹了JavaScript SHA1加密算法實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的朋友可以參考一下2016-10-10腳本吧 - 幻宇工作室用到j(luò)s,超強(qiáng)推薦expand.js
腳本吧 - 幻宇工作室用到j(luò)s,超強(qiáng)推薦expand.js...2006-12-12JavaScript中const、var和let區(qū)別淺析
在JavaScript中有三種聲明變量的方式:var、let、const。但是有朋友不清楚這三種聲明變量的區(qū)別,下面腳本之家小編給大家詳細(xì)介紹下js中const、var和let的區(qū)別,感興趣的朋友一起看看吧2016-10-10JavaScript一元正號(hào)運(yùn)算符示例代碼
這篇文章主要給大家介紹了關(guān)于JavaScript一元正號(hào)運(yùn)算符的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06淺談js中同名函數(shù)和同名變量的執(zhí)行問(wèn)題
下面小編就為大家?guī)?lái)一篇淺談js中同名函數(shù)和同名變量的執(zhí)行問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02簡(jiǎn)單實(shí)例處理url特殊符號(hào)&處理(2種方法)
url里的參數(shù)內(nèi)容包含&符合,我有兩種方法解決一是:在頁(yè)面用JS轉(zhuǎn)碼;二是:在后端處理,另外還有網(wǎng)絡(luò)分享的一些方法,感興趣的朋友可以參考下哈2013-04-04使用JS判斷移動(dòng)端手機(jī)橫豎屏狀態(tài)
本文通過(guò)js和cas代碼分別給大家介紹了移動(dòng)端判斷手機(jī)橫豎屏狀態(tài)的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07