vue输入框限制字符串长度和输入内容实时验证的实现方式
一、最简单,通过maxlength和onkeyup
<input maxlength="16" onkeyup="this.value=this.value.replace(/[^\w[!@#.=_~+,./<>?:;'\\\$\%\^\&\*\(\)\-\|\[\]\{\}\{\}]/g,'');" />
代码中正则是限制除中文外的所有键盘字符。
二、通过@input和@change
见代码:
<input type="text" v-model="groupName" class="edit-input" ref="groupName" @input="changeValue" @change="editGroupNameSave(groupInfo.name)" > changeValue () { let leng = this.validateTextLength(this.groupName) if (leng >= 15) { this.$refs.groupName.maxLength = leng } else { this.$refs.groupName.maxLength = 30 } }, validateTextLength (value) { // 中文、中文标点、全角字符按1长度,英文、英文符号、数字按0.5长度计算 let cnReg = /([\u4e00-\u9fa5]|[\u3000-\u303F]|[\uFF00-\uFF60])/g let mat = value.match(cnReg) let length if (mat) { length = (mat.length + (value.length - mat.length) * 0.5) return length } else { return value.length * 0.5 } }
三、通过watch
见代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Examples</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id="app">
<input type="text" v-model="items.text" ref="count"/>
<div v-html="number"></div>
</div>
<script>
new Vue({
el: '#app',
data: {
number: '100',
items: {
text:'',
},
},
watch:{ //watch()监听某个值(双向绑定)的变化,从而达到change事件监听的效果
items:{
handler:function(){
var _this = this;
var _sum = 100; //字体限制为100个
_this.$refs.count.setAttribute("maxlength",_sum);
_this.number= _sum- _this.$refs.count.value.length;
},
deep:true
}
}
})
</script>
</body>
</html>

浙公网安备 33010602011771号