• 【Vue 2.X】基于input[type='number']封装parseFloat、parseInt-自定义指令系列(一)


    一、parseFloat

    效果:限制负值输入,且输入值不为空时自动保留两位小数,等同于js的parseFloat(value).toFixed(2)

    使用:与v-model配合使用,v-parseFloat=“v-model绑定值”

     1 Vue.directive('parseFloat', {
     2     bind: function(el, binding, vNode){
     3         el.oInput = el.getElementsByTagName('input')[0]
     4         el.maxNum = binding.arg
     5         el.handlerKeyUp = function(){
     6             if(el.oInput.value){
     7                 let tempArr = String(el.oInput.value).split('.')
     8                 if(tempArr[1] && tempArr.length <= 2 && !isPostNum(el.oInput.value)){
     9                     el.oInput.value = Number(el.oInput.value).toFixed(2)
    10                     vNode.context[binding.expression] = Number(el.oInput.value).toFixed(2)
    11                     return
    12                 }
    13             }
    14             if(!el.oInput.value){
    15                 el.oInput.value = ''
    16                 vNode.context[binding.expression] = ''
    17                 return
    18             }
    19         }
    20         el.handlerBlur = function(){
    21             if(el.oInput.value){
    22                 el.oInput.value = Number(el.oInput.value).toFixed(2)
    23                 vNode.context[binding.expression] = Number(el.oInput.value).toFixed(2)
    24                 return 
    25             } 
    26         }
    27         el.oInput.addEventListener('keyup',el.handlerKeyUp)
    28         el.oInput.addEventListener('blur',el.handlerBlur)
    29     },
    30     unbind:function(el){
    31         el.oInput = el.getElementsByTagName('input')[0]
    32         el.oInput.removeEventListener('keyup', el.handlerKeyUp)
    33         el.oInput.removeEventListener('blur', el.handlerBlur)
    34     }
    35 });
     1 const regFloat = /^(([0]|[1-9][0-9]*)|(([0].d{1,2}|[1-9][0-9]*.d{1,2})))$/ //两位小数
     2 // 判断是否是正数(保留两位小数) minNum最小值 maxNum最大值
     3 function isPostNum(value, minNum, maxNum){
     4     const minVal = minNum || ''
     5     const maxVal = maxNum || ''
     6     if(!regFloat.test(value)){
     7       return false
     8     }
     9     if(minVal && value < minVal){
    10       return false
    11     }
    12     if(maxNum && value > maxVal){
    13       return false
    14     }
    15     return true
    16 }

    二、parseInt

    效果:限制负值输入,且输入值不为空时自动保留整数,等同于js的parseInt(value)

    使用:与v-model配合使用,v-parseFloat=“v-model绑定值”

     1 Vue.directive('int', {
     2     bind: function(el, binding, vNode){
     3         el.oInput = el.getElementsByTagName('input')[0]
     4         el.maxNum = binding.arg
     5         el.handlerKeyUp = function(){
     6             if(!isNum(el.oInput.value)){
     7                 el.oInput.value = ''
     8                 vNode.context[binding.expression] = ''
     9                 return
    10             }
    11             if(el.oInput.value){
    12                 el.oInput.value = parseInt(el.oInput.value)
    13                 vNode.context[binding.expression] = parseInt(el.oInput.value)
    14                 return
    15             }
    16             if(!el.oInput.value){
    17                 el.oInput.value = ''
    18                 vNode.context[binding.expression] = ''
    19                 return
    20             }
    21         }
    22         el.handlerBlur = function(){
    23             if(el.oInput.value){
    24                 el.oInput.value = parseInt(el.oInput.value)
    25                 vNode.context[binding.expression] =parseInt(el.oInput.value)
    26                 return 
    27             } 
    28         }
    29         el.oInput.addEventListener('keyup',el.handlerKeyUp)
    30         el.oInput.addEventListener('blur',el.handlerBlur)
    31     },
    32     unbind:function(el){
    33         el.oInput = el.getElementsByTagName('input')[0]
    34         el.oInput.removeEventListener('keyup', el.handlerKeyUp)
    35         el.oInput.removeEventListener('blur', el.handlerBlur)
    36     }
    37 });
  • 相关阅读:
    IDEA右键新建时没有Java Class选项
    捕获摄像头视频VC
    重叠IO与IOCP
    (八)内存管理与内存分配
    DebugView使用详解
    (六) 中断机制
    (五) proc文件系统
    bash 之备份文件
    bash 遍历目录文件
    (四) linux内核模块编程
  • 原文地址:https://www.cnblogs.com/ylhssn/p/12035193.html
Copyright © 2020-2023  润新知