使用了element组件
问题代码
<el-input v-model="ContractYear" oninput="if(value.length>2)value=value.slice(0,2);if(value.length > 21)value = value.slice(0,20)"
style="display: inline-block" placeholder="年份(数字)" clearable :style="{width: '20%'}"></el-input>
使用的oninput 以及 oninput直接操作的value并没有直接操作v-model绑定的数据 就是这里出现的问题
解决方案是 通过@input 以及 直接操作v-model中绑定的值
改良后代码
<el-input v-model="ContractYear" @input="input"
style="display: inline-block" placeholder="年份(数字)" clearable :style="{width: '28%'}"></el-input>
input函数的内容
input(){
console.log('触发了input')
this.ContractYear = this.ContractYear.replace(/[^A-Z0-9]/g,'')
if(this.ContractYear.length > 21{
this.ContractYear = this.ContractYear.slice(0,20)
}
},.
原因可能是 vue的数据双向绑定对原生的oninput的支持不是那么的完善