扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
怎么在vue中实现input标签通用指令校验?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联公司是一家集网站建设,铜官企业网站建设,铜官品牌网站建设,网站定制,铜官网站建设报价,网络营销,网络优化,铜官网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
移动端通常对于input标签要求输入有一些校验,vue的指令可达到完美校验的作用
预期效果
属性data-last_value的值用来缓存用户输入框上一次失去焦点后输入的值,lastTimes是初始化的变量,后续不会再随意更改此值, v-model一定不要和data-last_value绑定同一个变量, 因为这样就起不到记住用户上一次输入值,并利用该值在校验不通过的情况下使用它
指令实现
以下3个指令可完全独立使用
校验整数
const util = { isNumber(str) { const num = Number(str); return Math.floor(num) === num; } }; directives: { int: { inserted: (el) => { let oldListener = el.onblur; el.onblur = (e) => { if (oldListener) { oldListener(e); } const blurValue = Number(el.value); // 用data-last_value属性值缓存上一次的值,以便恢复 const lastValue = el.getAttribute('data-last_value'); if (!util.isNumber(blurValue)) { util.toast('请输入数字'); el.value = lastValue; el.dispatchEvent(new Event('input')); } if (el.value === lastValue) return; // 更新上一次的值 el.setAttribute('data-last_value', el.value); } }, }, }
校验最小值
directives: { min: { inserted: (el, binding) => { const oldListener = el.onblur; el.onblur = (e) => { if (oldListener) { oldListener(e); } const blurValue = Number(el.value); const min = binding.value; if (blurValue < min) { // util.toast替换成自己业务的toast提示弹窗 util.toast(`最小值不能小于${min}`); el.value = min; el.dispatchEvent(new Event('input')); } const lastValue = el.getAttribute('data-last_value'); if (el.value === lastValue) return; // 更新上一次的值 el.setAttribute('data-last_value', el.value); } }, }, }
校验最大值
directives: { max: { // 指令的定义 inserted: (el, binding) => { const oldListener = el.onblur; el.onblur = (e) => { if (oldListener) { oldListener(e); } const blurValue = Number(el.value); const max = binding.value; if (blurValue > max) { util.toast(`最大值不能大于${max}`); el.value = max; el.dispatchEvent(new Event('input')); } const lastValue = el.getAttribute('data-last_value'); if (el.value === lastValue) return; // 更新上一次的值 el.setAttribute('data-last_value', el.value); } }, }, }
关于怎么在vue中实现input标签通用指令校验问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流