最近在做一個金額查詢,驗證的時候總是出現很多問題,如輸入-號后,input框里是沒有了,但是在model里還是綁定了,提交的時候就會報錯,真的是讓人很是郁悶,小數點也是input框過濾掉了,但是提交的時候也會出現。不過經過努力終于找到了一種解決方案,在這里``和大家分享一下下。
Vue.directive('numbers', { bind: function (el, binding) { console.log('ere') }, inserted: function (el) { // el.querySelector('input').blur(console.log('etset')) }, update: function (el, binding, vnode, oldVnode) { console.log('vnode', vnode) let express = vnode.data.directives[1].expression // let value = el.querySelector('input').value let value = vnode.data.directives[1].value if (typeof value === 'string') {} //在重置的時候清空 if (value.split('.').length - 1 > 1) { value = value.replace(//.{2,}/g, '') // 只保留第一個. 清除多余的 value = value.replace('.', '$#$').replace(//./g, '').replace('$#$', '.') } let repeatValue = value.replace(/[^/d.]/g, '') // setTimeout(() => { // el.querySelector('input').value = repeatValue // }, 5) setValueWithExpressionVue(vnode.context.$data, express, repeatValue) }, componentUpdated: function () {}, unbind: function (el) {}})// function setValueWithExpressionVue (currObj, expression, value) { expression = expression.split('.') expression.forEach(function (arg, i) { if (i < expression.length - 1) { currObj = currObj[arg] } else { currObj[arg] = value } })}放到main.js里就好了
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持錯新站長站。
新聞熱點
疑難解答
圖片精選