基于vue2.0的数字输入框指令

本文介绍了一个基于Vue2.0的数字输入框指令的实现,详细阐述了需求,包括设置小数位数、符号输入、最值限制及边界处理策略,并提供了使用示例和源码解析。
摘要由CSDN通过智能技术生成

基于vue2.0的数字输入框指令(v-number)

在这里插入图片描述

需求如何

最近用到了 数字输入框,需求需要满足:

  1. 设置输入的小数位数
  2. 设置是否支持输入符号
  3. 支持最值(最大值、最小值)
  4. 设置边界超出处理 (1、超出是否替换成最值 2、超出最值无法进一步输入)

首先来看下配置属性有哪些:

  • max - 输入数字最大值
  • min - 输入数字最小值
  • digit - 设置小数位数
  • negative 是否支持输入符号
  • isReplace - 超出最值 是采用替换成对应最值

如何使用

我们再来看下我们可以如何使用:

以下需求为 允许输入符号,允许输入最大值为 99999999,允许输入最小值为 -99999999,小数保留位数 2

<template>
  <div class="hello">
    <input type="text" v-number="{ negative: true, max: 99999999, min: -99999999 , digit:2 }">
  </div>
</template>

源码共享

我每行代码尽量写了注释,尽量的解释逻辑,下面来看下我们指令(number)的源码,指令名字我取为 number

export default {
   
  bind (el, binding) {
   
    // input 输入框 元素 兼容
    if (el.tagName !== 'INPUT') el = el.querySelector('input')
    // 记录旧值
    el.old = ''
    // 其它非法值进行处理 函数
    el.formatVal = function(newValue,is) {
   
      newValue = newValue.replace(/[^\d.]/, '')    // 首位 不是数字 或 小数点 就干掉
      newValue = newValue.replace(/^0+(\d)/, '$1') // 第一位0开头,0后面为数字,则过滤掉,取后面的数字
      newValue = newValue
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 2.0 中可以通过自定义指令来扩展其功能。自定义指令可以用于在元素上添加特定的行为和交互。下面是自定义指令的基本用法: 1. 注册自定义指令: ```javascript Vue.directive('directiveName', { // 指令选项 }) ``` 2. 指令选项: - `bind`:指令第一次绑定到元素时调用,可以在这里进行初始化设置。 - `inserted`:被绑定元素插入父节点时调用。 - `update`:被绑定元素所在的组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。 - `componentUpdated`:被绑定元素所在的组件的 VNode 及其子 VNode 全部更新后调用。 - `unbind`:指令与元素解绑时调用,可以在这里进行清理工作。 3. 指令函数参数: - `el`:指令所绑定的元素。 - `binding`:一个对象,包含以下属性: - `name`:指令名,不包括 v- 前缀。 - `value`:指令的绑定值,例如 v-directiveName="value" 中的 value。 - `oldValue`:指令的前一个绑定值。 - `expression`:指令的表达式,例如 v-directiveName="expression" 中的 expression。 - `arg`:传给指令的参数,例如 v-directiveName:arg。 - `modifiers`:包含修饰符的对象,例如 v-directiveName.modifier。 下面是一个简单的示例,演示了如何自定义一个简单的指令,使元素在绑定时自动获取焦点: ```javascript Vue.directive('focus', { inserted: function (el) { el.focus(); } }); ``` 然后,你可以在模板中使用这个指令: ```html <input v-focus> ``` 这样,在页面加载时该输入框就会自动获取焦点。 希望这能帮到你!如果你还有其他问题,请继续提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值