国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

結(jié)合Vue控制字符和字節(jié)的顯示個(gè)數(shù)

netScorpion / 1181人閱讀

摘要:需求需求結(jié)合實(shí)現(xiàn)下面的效果輸入框中最多輸入個(gè)字符漢字最多顯示個(gè),超出部分以顯示英文最多顯示個(gè),超出部分以顯示實(shí)現(xiàn)搭建簡單頁面,并設(shè)置簡單樣式在正式開始寫核心代碼之前,要先把代碼結(jié)構(gòu)搭建起來,這樣后面寫的時(shí)候就會(huì)看著簡潔點(diǎn)了。

需求

需求:結(jié)合Vue實(shí)現(xiàn)下面的效果

輸入框中最多輸入16個(gè)字符

漢字最多顯示5個(gè),超出部分以...顯示

英文最多顯示10個(gè),超出部分以...顯示

實(shí)現(xiàn) 搭建簡單頁面,并設(shè)置簡單樣式

在正式開始寫核心代碼之前,要先把代碼結(jié)構(gòu)搭建起來,這樣后面寫的時(shí)候就會(huì)看著簡潔點(diǎn)了。

首先需要一個(gè)輸入框用來輸入內(nèi)容,其次需要一個(gè)元素,用來顯示輸入框中的內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)的雙向綁定。
其中,輸入內(nèi)容的最大長度是可以通過input標(biāo)簽的屬性來指定的。

內(nèi)容:{{txt}}

輸入的字符個(gè)數(shù):{{computedCharLen}}

輸入的字節(jié)個(gè)數(shù):{{computedByteLen}}

頁面的結(jié)構(gòu)已經(jīng)搭建完成了,那下面就是做一些簡單的樣式優(yōu)化了。

* { margin: 0; padding: 0; -webkit-box-sizing: border-box; box-sizing: border-box; }
body { background: #efefef; }
.clsinp { width: 100%; height: 40px; outline: none; line-height: 40px; font-size: 16px; padding: 0 10px; margin-top: 20px; color: blue; }
.clsmsg { padding: 10px 10px; }
.clsmsg span { color: blue; }

最后一步應(yīng)該就是引入Vue,然后搭建一些簡單的數(shù)據(jù)內(nèi)容。

var vm = new Vue({
  el: "#app",
  data() {
    return {
      txt: ""
    }
  },
  // 后期代碼在下面補(bǔ)充
})
ASCII范圍內(nèi)與范圍外

了解ASCII的內(nèi)容,請移步到http://www.asciima.com/

ASCII中包含256個(gè)字符,因此超過256之外的字符,全部都是非ASCII字符,一般情況下,漢字就是在這個(gè)范圍中。

因此,編碼不在0-255的字符可以使用正則表達(dá)式/[^x00-xff]/g來進(jìn)行匹配。這個(gè)時(shí)候就提供了一個(gè)思路,如果不是ASCII碼中的字符,那么就默認(rèn)它占了兩個(gè)字節(jié)。

我們修改一下頁面結(jié)構(gòu),輸出一些測試信息:

內(nèi)容:{{txt}}

輸入的字符個(gè)數(shù):{{computedCharLen}}

輸入的字節(jié)個(gè)數(shù):{{computedByteLen}}

補(bǔ)充需要的計(jì)算屬性:

computed: {
  // 獲取字符的個(gè)數(shù)
  computedCharLen() {
    return this.txt.length
  },
  // 獲取字節(jié)的個(gè)數(shù)
  computedByteLen() {
    return this.txt.replace(/[^x00-xff]/g, "01").length
  }
}

這個(gè)時(shí)候,我們輸入內(nèi)容,出現(xiàn)下面的效果:

這個(gè)時(shí)候會(huì)發(fā)現(xiàn),已經(jīng)實(shí)現(xiàn),ASCII碼范圍內(nèi)的占1位,超出范圍的占2位。

控制顯示的內(nèi)容

內(nèi)容顯示使用計(jì)算屬性來實(shí)現(xiàn):

內(nèi)容:{{computedTxt}}

// 控制顯示的內(nèi)容
computedTxt() {
  return this.methodGetByteLen(this.txt, 10)
}

下面補(bǔ)充一下methodGetByteLen方法:

/**
 * str 需要控制的字符串
 * len 字節(jié)的長度,如5個(gè)漢字,10個(gè)英文,輸入?yún)?shù)就是10
 */
methodGetByteLen(str, len) {
  // 如果字節(jié)的長度小于控制的長度,那么直接返回
  if (this.computedByteLen <= len) {
    return str
  }
  for (let i = Math.floor(len / 2); i < str.length; i++) {
    if (str.substr(0, i).replace(/[^x00-xff]/g, "01").length >= len) {
      // Math.floor(i / 2) * 這里是控制特殊情況的顯示
      // 如 "一二aaa一二三四",顯示的結(jié)果就是 "一二aaa一..."
      return str.substr(0, Math.floor(i / 2) * 2) + "..."
    }
  }
}
最終的顯示情況

沒有超過最大指定長度的情況

超過最大指定長度(漢字輸入)

超過最大指定長度(數(shù)字輸入)

超過最大指定長度(漢字和字母的組合)

完整代碼

最后,把最終代碼粘貼出來:





  
  
  
  Document
  



  

內(nèi)容:{{computedTxt}}

輸入的字符個(gè)數(shù):{{computedCharLen}}

輸入的字節(jié)個(gè)數(shù):{{computedByteLen}}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/89262.html

相關(guān)文章

  • 社交系統(tǒng)ThinkSNS+ 如何利用 Laravel 表單驗(yàn)證來驗(yàn)證用戶名(我朝獨(dú)有需求,兩個(gè)字母

    摘要:言歸正傳,之所以寫繼篇,其實(shí)是來檢討的,上一次發(fā)表了如何計(jì)算字符顯示長度后,有網(wǎng)友幾經(jīng)測試后告知有問題。簡言之單字節(jié)字符占,多字節(jié)字符占字節(jié)。 什么是ThinkSNS+ ThinkSNS(簡稱TS)始于2008年,一款全平臺(tái)綜合性社交系統(tǒng),為國內(nèi)外大中小企業(yè)和創(chuàng)業(yè)者提供社會(huì)化軟件研發(fā)及技術(shù)解決方案,目前最新版本為ThinkSNS+。 后端框架使用laravel,每周和 laravel ...

    xiaodao 評論0 收藏0
  • Unicode與JavaScript詳解

    摘要:本文大部分內(nèi)容轉(zhuǎn)自阮一峰前輩的文章,更新了部分內(nèi)容并加入了部分自己的理解。字符串處理函數(shù)新增了幾個(gè)專門處理字節(jié)碼點(diǎn)的函數(shù)。參考鏈接阮一峰與詳解輔助平面入門 本文大部分內(nèi)容轉(zhuǎn)自 阮一峰前輩的文章,更新了部分內(nèi)容并加入了部分自己的理解。 Unicode是什么? Unicode源于一個(gè)很簡單的想法:將全世界所有的字符包含在一個(gè)集合里,計(jì)算機(jī)只要支持這一個(gè)字符集,就能顯示所有的字符,再也不會(huì)有...

    econi 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<