获取字符长度以及模拟文本框maxlength实现的功能

1. 方法

/***

* 获取字符长度
* @param val 文本值
* @param max 最大字节数
* @returns
*/
getByteVal(val, max) {
var returnValue = ''
var byteValLen = 0
for (var i = 0; i < val.length; i++) {
if (val[i].match(/[^\x00-\xff]/gi) != null) byteValLen += 2
else byteValLen += 1
if (byteValLen > max) break
returnValue += val[i]
}
if (byteValLen > max) {
return false
} else {
return true
}
},
/***
* 将文本框字符长度限制在规定的字节个数内
* @param str 文本值
* @param maxLength 最大字节数
* @returns
*/
limitValMaxLength(str, maxLength) {
let result = []
for (let i = 0; i < maxLength; i++) {
let char = str[i]
if (/[^\x00-\xff]/gi.test(char)) {
maxLength--
result.push(char)
} else {
result.push(char)
}
}
return result.join('')
}

 

2. 调用
enterEnglishName() {
if (
!this.$utils.getByteVal(
this.ruleFormEnter.englishName,
this.maximumCharacter
)
) {
this.isRemarkTips = true
this.$set(
this.ruleFormEnter,
'englishName',
this.$utils.limitValMaxLength(
this.ruleFormEnter.englishName,
this.maximumCharacter
)

 

)
} else {
this.isRemarkTips = false
}
}
posted @ 2020-08-27 11:46  振锋小哥  阅读(305)  评论(0)    收藏  举报