当前位置: 首页 > Web前端 > HTML5

vue输入标签通用指令验证

时间:2023-04-04 22:53:18 HTML5

移动端通常需要对input标签进行一些校验,vue命令可以达到完美校验的效果。预期效果属性data-last_value的值用于缓存上次用户输入框失去焦点后输入的值,lastTimes是一个初始化变量,以后这个值不会随意改变,v-model一定不要和data-last_value绑定同一个变量,因为不会能够记住用户最后一次输入的值,并在验证失败时使用这个值。以下三个指令可以完全独立地使用检查整数constutil={isNumber(str){constnum=Number(str);返回Math.floor(num)===num;}};指令:{int:{插入:(el)=>{让oldListener=el.onblur;el.onblur=(e)=>{if(oldListener){oldListener(e);}constblurValue=Number(el.value);//使用data-last_value属性值缓存最后一个值,以便恢复constlastValue=el.getAttribute('data-last_value');if(!util.isNumber(blurValue)){util.toast('请输入数字');el.value=lastValue;el.dispatchEvent(新事件('输入'));}if(el.value===lastValue)返回;//更新最后一个值el.setAttribute('data-last_value',el.value);}},},}检查最小值指令:{min:{inserted:(el,binding)=>{constoldListener=el.onblur;el.onblur=(e)=>{if(oldListener){oldListener(e);}constblurValue=Number(el.value);constmin=binding.value;if(blurValue{constoldListener=el.onblur;el.onblur=(e)=>{如果(旧听众){旧听众(e);}constblurValue=Number(el.value);constmax=binding.value;if(blurValue>max){util.toast(`最大值不能大于${max}`);el.value=max;el.dispatchEvent(新事件('输入'));}constlastValue=el.getAttribute('data-last_value');如果(el.value===lastValue)返回;//更新最后一个值el.setAttribute('data-last_value',el.value)的值;}},},}验证小指令没想到里面有这么多细节~~~