Vue.js数字输入框组件使用方法详解


Posted in Javascript onOctober 19, 2019

本文实例为大家分享了Vue.js数字输入框组件的具体实现代码,供大家参考,具体内容如下

效果

Vue.js数字输入框组件使用方法详解

入口页 index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>数字输入框组件</title>
</head>
<body>
 <div id="app">
  <input-number v-model="value" :max="10" :min="0"></input-number>
 </div>
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
 <script src="input-number.js"></script>
 <script src="index.js"></script>
</body>
</html>

数字输入框组件 input-number.js

function isValueNumber(value) {
 return (/(^-?[0-9]+\.{1}\d+$) | (^-?[1-9][0-9]*$) | (^-?0{1}$)/).test(value + '');
}


Vue.component('input-number',{
 template: '\
  <div class="input-number">\
   <input \
    type="text"\
    :value="currentValue"\
    @change="handleChange">\
   <button \
    @click="handleDown"\
    :disabled="currentValue <= min">-</button>\
   <button \
    @click="handleUp"\
    :disabled="currentValue >= max">+</button>\
  </div>',
 props: {
  max: {
   type: Number,
   default: Infinity
  },
  min: {
   type: Number,
   default: -Infinity
  },
  value: {
   type: Number,
   default: 0
  }
 },
 data: function () {
  return {
   currentValue: this.value
  }
 },
 watch: {
  currentValue: function (val) {
   this.$emit('input', val);
   this.$emit('on-change',val);
  },
  value: function (val) {
   this.updateValue(val);
  }
 },
 methods: {
  updateValue: function (val) {
   if(val > this.max)
    val = this.max;
   if(val < this.min)
    val = this.min;
   this.currentValue = val;
  },
  handleDown: function () {
   if(this.currentVaule <= this.min)
    return;
   this.currentValue -= 1;
  },
  handleUp: function () {
   if(this.currentVaule >= this.max)
    return;
   this.currentValue += 1;
  },
  handleChange: function (event) {
   var val = event.target.value.trim();

   var max = this.max;
   var min = this.min;

   if(isValueNumber(val)){
    val = Number(val);
    this.currentValue = val;

    if(val > max){
     this.currentValue = max;
    }else if(val < min){
     this.currentValue = min;
    }
   }else{
    event.target.value = this.currentValue;
   }
  }
 },
 mounted: function () {
  this.updateValue(this.value);
 }
});

根实例

var app = new Vue({
 el: '#app',
 data: {
  value: 5
 }
});

更多教程点击《Vue.js前端组件学习教程》,欢迎大家学习阅读。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
Mar 21 Javascript
屏蔽script注入小例子
Nov 12 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
Dec 19 Javascript
JS+CSS实现电子商务网站导航模板效果代码
Sep 10 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
Feb 26 Javascript
vue2.0中click点击当前li实现动态切换class
Jun 21 Javascript
jquery easyui如何实现格式化列
Jul 30 jQuery
jquery插件开发之选项卡制作详解
Aug 30 jQuery
JavaScript动态绑定详解
Sep 14 Javascript
详解开源的JavaScript插件化框架MinimaJS
Oct 26 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
Feb 21 Javascript
JavaScript 中判断变量是否为数字的示例代码
Oct 22 Javascript
JavaScript闭包相关知识解析
Oct 19 #Javascript
Vue.js组件通信之自定义事件详解
Oct 19 #Javascript
Vue.js自定义指令学习使用详解
Oct 19 #Javascript
Vue.js标签页组件使用方法详解
Oct 19 #Javascript
基于JavaScript获取base64图片大小
Oct 18 #Javascript
react MPA 多页配置详解
Oct 18 #Javascript
vue滚动插件better-scroll使用详解
Oct 18 #Javascript
You might like
点评山进PR-D3L三波段收音机
2021/03/02 无线电
php设置允许大文件上传示例代码
2014/03/10 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
2014/08/28 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
javascript Excel操作知识点
2009/04/24 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
2017/10/25 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
vue+Element-ui实现分页效果
2020/11/15 Javascript
python基础教程之Hello World!
2014/08/29 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
什么是python的函数体
2020/06/19 Python
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
红领巾心向党广播稿
2014/01/19 职场文书
机电一体化应届生求职信范文
2014/01/24 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
物业管理专业自荐信
2014/07/01 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
社区植树节活动总结
2015/02/06 职场文书