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 相关文章推荐
Javascript和Ajax中文乱码吐血版解决方案
Dec 21 Javascript
JavaScript中的数学运算介绍
Dec 29 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
Apr 18 Javascript
javascript深拷贝(deepClone)详解
Aug 24 Javascript
jQuery ajaxForm()的应用
Oct 14 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
Dec 26 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
Mar 30 Javascript
Bootstrap响应式表格详解
May 23 Javascript
angularjs实现时间轴效果的示例代码
Nov 29 Javascript
vue实现新闻展示页的步骤详解
Apr 11 Javascript
Vue中jsx不完全应用指南小结
Nov 01 Javascript
vue点击页面空白处实现保存功能
Nov 06 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
PHP数组交集的优化代码分析
2011/03/06 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
JS页面延迟执行一些方法(整理)
2013/11/11 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
jQuery超赞的评分插件(8款)
2015/08/20 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
js实现页面多个日期时间倒计时效果
2019/06/20 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
Element MessageBox弹框的具体使用
2020/07/27 Javascript
微信小程序实现点赞业务
2021/02/10 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
Python实现在线程里运行scrapy的方法
2015/04/07 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
应届毕业生的个人自我鉴定
2013/10/24 职场文书
本科毕业生自我鉴定
2013/11/02 职场文书
党支部书记先进事迹
2014/01/17 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
2014年流动人口工作总结
2014/11/26 职场文书
体育活动总结
2015/02/04 职场文书
nginx配置指令之server_name的具体使用
2022/08/14 Servers