前情提要:項目中使用kindeditor作富文本編輯器,可是中文在數據庫中佔用3個字節,英文是1個字節,而p標籤換行標籤也各自佔用對應的代碼長度字節.html
kindeditor版本 @version 4.1.2 (2012-07-21)數據庫
頁面使用如下代碼計數編輯器
js:this
afterChange : function() {K('.word_count').html(this.count());}
html:spa
<p>您當前輸入了 <span class="word_count">0</span> 個文字。</p>
問題:因爲kindeditor自帶的計數器是按照字符來計算的,因此呢,若是按照它提供的字符數提交到數據庫code
因此Google以後.找到一個過濾字符Unicode來計數的方式,略加修改,添加到kindeditor.js的count(位於5111行)方法後面,取名countCode. htm
countCode : function() { var self = this, total = 0, i, str = _removeBookmarkTag(_removeTempTag(self.html())), len; for(i = 0, len = str.length; i < len; i++){ charCode = str.charCodeAt(i); if(charCode <= 0x007f) { total += 1; }else if(charCode <= 0x07ff){ total += 2; }else if(charCode <= 0xffff){ total += 3; }else{ total += 4; } } return total; },
相應的頁面要調用的js也要修改.
afterChange : function() {K('.word_count').html(this.countCode());}
過後添加:rem
修改kindeditor-min.js富文本編輯器
搜索"count:"在其後添加it
countCode:function(){var a=0,i,b=V(ab(this.html())),c;for(i=0,c=b.length;i<c;i++){d=b.charCodeAt(i);if(d<=0x007f){a+=1;}else if(d<=0x07ff){a+=2;}else if(d<=0xffff){a+=3;}else{a+=4;}}return a;},這樣你就能夠再頁面使用kindeditor-min.js啦.