兼容ios上textarea字符數的問題

在ios上textarea如果使用粘貼會出現換行計算兩個字符數,就是/n計算的是兩個字符,導致maxlength計算不一致, 這就讓電腦上和手機上顯示的數量不一致:


image.png

使用復制粘貼后(復制剛剛的包含一個換行的輸入):


image.png

image.png

image.png

為什么顯示49是因為粘貼會自動加一個空格所以是49,實際是48個字符無法輸入, 電腦上粘貼不會出現maxlength計算錯誤問題,這就是ios有點坑的地方自己設計的maxlength計算規則卻不一致,這不扯嗎...


image.png

image.png

無奈只能自己寫方法去兼容下,這里說清楚了原因,應該都能寫出兼容方法了,我就粘貼個我自己寫的:

dealCurrentMaxLen(str, maxLen) {//Handle incorrect character count due to newline on ios
  if (Unit.isIos() && isMobile) {
    let reg = new RegExp(/\n/g);
    let lineNum = str.match(reg);
    return lineNum ? lineNum.length + maxLen : maxLen
   } else {
    return maxLen
  }
},

//html
<textarea :maxlength="dealCurrentMaxLen(headline, 50)" v-model="headline"></textarea>
<span>{{headline.length}}/50</span>

這里主要是將maxlength換成變量綁定 :
:maxlength="dealCurrentMaxLen(headline, 50)"
然后這個是自己寫的識別ios的代碼Unit.isIos(),這個你就自己去寫

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容