avatar
vue指令:限制数字类型9位数字和6位小数

admin 109 2019-03-17 22:47:50

JAVASCRIPT 1.05 KB
                                           
                         const findEl = (el) => {
    return el.tagName === 'INPUT' ? el : el.querySelector('input');
}

const trigger = (el, type) => {
    const e = document.createEvent('HTMLEvents')
    e.initEvent(type, true, true)
    el.dispatchEvent(e)
}

const formatValue = (el) => {
    if (!el.value) return;
    if (!el.value.match(/^[\+\-]?\d{1,9}(\.\d{0,6})?$/)) {
        el.value = el.t_value || null;
    } else {
        el.t_value = el.value;
    }
}

const inputNumber = {
    bind: function (ele, binding, vnode) {
        let el = findEl(ele);
        el.handler = function () {
            formatValue(el);
        }

        el.trigger = function () {
            trigger(el, 'input')
        }
        el.addEventListener('input', el.handler)
        el.addEventListener('keyup', el.trigger)
    },
    unbind: function (ele) {
        let el = findEl(ele);
        el.removeEventListener('input', el.handler)
        el.removeEventListener('keyup', el.trigger)
    }
}

export default inputNumber;
                      
                                       
To share this paste please copy this url and send to your friends
预览

评论

需要身份验证

您必须登录才能发表评论.

登录
    还没有评论.