input输入框按照字符数限制输入

news/2024/11/29 11:51:38/

实现效果:按照字符数限制用户输入长度,汉字为两个字符,数字和字母为一个字符,超出字符长度限制时,自动去掉多余部分来限制用户输入。

第一种实现方式,自定义指令(update存在不及时调用的情况,放弃

  • vue文件
<template><div><textarea v-limitTextLen="titleMaxLength" v-model="textareaValue"/></div>
</template>
<script>
export default {name: 'Home',data() {return {textareaValue: '',titleMaxLength: 10}}
}
</script>
  • js文件
    定义全局自定义指令
    src目录下新建directive文件夹,directive文件夹下新建index.js和limitTextLen.js

index.js内容如下:

import vLimitTextLen from "./limitTextLen";
export default (Vue) => {Vue.directive('limitTextLen', vLimitTextLen)
}

limitTextLen.js内容如下:

function getStringLengthForChinese(val) {let str = val.toString(val)let result = 0for (let i=0;i<str.length;i++) {let temp = str.charCodeAt(i)if ((temp > 0x0001 && temp <= 0x007e) || (temp >= 0xff60 && temp <= 0xff9f)) {result += 1} else {result += 2}}return result
}
export default {update: (el,binding) => {// 超出长度限制if (getStringLengthForChinese(el.value) > binding.value) {let arr = el.value.split('')// 输入字符转成数组,依次推出最后一位元素for (let i=arr.length-1;i>0;i--) {arr = arr.slice(0,i)el.value = arr.join('')// 每推出一个,再次进行长度判断if (getStringLengthForChinese(el.value) <= binding.value) {break}}}}
}

main.js中添加自定义指令

import Vue from 'vue'
import customDirective from './directive/index'
Vue.use(customDirective)new Vue({router,store,render: h => h(App)
}).$mount('#app')

第二种实现方式,watch监听(正常)

  • vue文件
<template><div><textarea v-model="textareaValue"/></div>
</template><script>
export default {name: 'Home',data() {return {textareaValue: '',titleMaxLength: 10}},watch: {textareaValue: function() {function getStringLengthForChinese(val) {let str = val.toString(val)let result = 0for (let i=0;i<str.length;i++) {let temp = str.charCodeAt(i)if ((temp > 0x0001 && temp <= 0x007e) || (temp >= 0xff60 && temp <= 0xff9f)) {result += 1} else {result += 2}}return result}let str = this.textareaValueif (getStringLengthForChinese(str) > this.titleMaxLength) {let arr = str.split('')// 输入字符转成数组,依次推出最后一位元素for (let i=arr.length-1;i>0;i--) {arr = arr.slice(0,i)str = arr.join('')// 每推出一个,再次进行长度判断if (getStringLengthForChinese(str) <= this.titleMaxLength) {this.textareaValue = strbreak}}}}}
}
</script>

http://www.ppmy.cn/news/487254.html

相关文章

vue获取字符串中字符的的数量_结合Vue控制字符和字节的显示个数

需求 需求&#xff1a;结合Vue实现下面的效果 输入框中最多输入16个字符 汉字最多显示5个&#xff0c;超出部分以...显示 英文最多显示10个&#xff0c;超出部分以...显示 实现 搭建简单页面&#xff0c;并设置简单样式 在正式开始写核心代码之前&#xff0c;要先把代码结构搭建…

linux统计文件单词数,Linux怎么统计文本的的行数/单词数和字符数?

Linux系统中想要统计文本的行数、单词和字符数量&#xff0c;该怎么统计呢&#xff1f;我们可以使用SecureCRT来统计&#xff0c;下面我们就来看看详细的教程。 1、启动Linux系统&#xff0c;用SecureCRT(或者其他的ssh工具&#xff0c;如xshell等)连上Linux系统。也可以在Linu…

统计字符串中每个字符的出现字数

package cn.itcast_03;import java.util.Scanner; import java.util.Set; import java.util.TreeMap;/** 统计字符串中每个字符的出现字数* * 分析&#xff1a;* A&#xff1a;定义一个字符串&#xff08;可以改进为键盘录入&#xff09;* B&#xff1a;定义一个TreeMa…

Eclipse设置每行的最大字符数

Eclipse默认宽度是 120 个字符。如下图所示&#xff08;提示&#xff1a;格式化快捷键Ctrl Shift F&#xff09;&#xff1a; 设置步骤如下&#xff1a; 菜单栏倒数第二项&#xff0c;选择Window下拉栏最后一项&#xff0c;选择Preferences左侧导航栏第八项&#xff0c;选择…

golang统计字符串字数

golang 可以使用正则和 unicode 包的方法判断。 以下函数 GetStrLength 返回输入的字符串的字数&#xff0c;每个汉字和中文标点算 1 个字数&#xff0c;英文和其他字符算半个字数&#xff0c;不足 1 个字算 1 个。 // GetStrLength 返回输入的字符串的字数&#xff0c;汉字和…

字节数与字符数mysql_数据库字段长短之字节与字符

以下部分摘抄于网络&#xff0c;请知悉 1、字符&#xff1a;常见的1、2、A、a、&#xffe5;、*、&#xff1f;、国、#等符号都叫做字符&#xff1b; 2、字节&#xff1a;存储容量的单位Byte(B)&#xff0c;一个字节是8个bit(b)。 根据字符集、编码方式的不同&#xff0c;不同的…

python按位数分割字符串_按位置拆分字符串

我们知道anchors、word boundaries和{}在某个位置匹配,而不是匹配字符。 是否可以使用regex(特别是python)通过前面的一种方法拆分字符串?在 例如,考虑以下字符串:"ThisisAtestForchEck,Match IngwithPosition." 因此,我需要以下结果(以大写字母开头但不以空格开…

限制input输入框的输入字符个数,区别中英文字符

input输入框自带maxlength&#xff0c;但是无论是中文还是英文字符都算1。我们项目中要求的是中文字符算2个长度&#xff0c;英文字符算1一个长度。且我的是vue项目&#xff0c;需要实现双向数据绑定。经过一番研究得出下面的方法实现&#xff0c;暂时看来应该没问题。在此记录…