vue引入js数字小键盘的实现代码


Posted in Javascript onMay 14, 2018

效果如图:

vue引入js数字小键盘的实现代码

代码如下:

  keyboard.vue

<template> 
 <div class="keyboard" v-show="showKeyboard" v-clickoutside="closeModal"> 
  <p v-for="keys in keyList"> 
   <template v-for="key in keys"> 
    <i v-if="key === 'top'" @click.stop="clickKey" class="iconfont icon-zhiding tab-top"></i> 
    <i v-else-if="key === '123'" @click.stop="clickKey" class="tab-num">123</i> 
    <i v-else-if="key === 'del'" @click.stop="clickKey" id="del" class="iconfont icon-delete key-delete"></i> 
    <i v-else-if="key === 'blank'" @click.stop="clickKey" class="iconfont icon-konggejian-jianpanyong tab-blank"></i> 
    <i v-else-if="key === 'symbol'" @click.stop="clickKey" class="tab-symbol">符</i> 
    <i v-else-if="key === 'point'" @click.stop="clickKey" class="tab-point">·</i> 
    <i v-else-if="key === 'enter'" @click.stop="clickKey" class="iconfont icon-huiche tab-enter"></i> 
    <i v-else @click.stop="clickKey" >{{key}}</i> 
   </template> 
  </p> 
 </div> 
</template> 
<script> 
import clickoutside from '../../directives/clickoutside' 
export default { 
 directives: { clickoutside }, 
 data() { 
  return { 
   keyList: [], 
   status: 2,//0 小写 1 大写 2 数字 3 符号 
   lowercase: [ 
    ['7', '8', '9'], 
    ['4', '5', '6'], 
    ['1', '2', '3'], 
    ['.','0','del'], 
   ], 
   //equip:!!navigator.userAgent.toLocaleLowerCase().match(/ipad|mobile/i)//是否是移动设备 
  } 
 }, 
 props: { 
  option: { 
   type: Object 
  } 
 }, 
 computed: { 
  showKeyboard(){ 
   return this.option.show 
  } 
 }, 
 mounted() { 
  this.keyList = this.lowercase 
 }, 
 methods: { 
  tabHandle({ value = '' }) { 
   if(value.indexOf('tab-num') > -1){ 
     this.status = 2 
     //数字键盘数据 
   }else if(value.indexOf('key-delete') > -1){ 
    console.log(value.indexOf('key-delete')) 
    this.emitValue('delete') 
   }else if(value.indexOf('tab-blank') > -1){ 
    this.emitValue(' ') 
   }else if(value.indexOf('tab-enter') > -1){ 
    this.emitValue('\n') 
   }else if(value.indexOf('tab-point') > -1){ 
    this.emitValue('.') 
   }else if(value.indexOf('tab-symbol') > -1){ 
    this.status = 3 
   }else if(value.indexOf('tab-top') > -1){ 
    if(this.status === 0){ 
     this.status = 1 
    }else{ 
     this.status = 0 
     this.keyList = this.lowercase 
    } 
   }else{ 
   } 
  }, 
  clickKey(event) { 
   // if(event.type === 'click' && this.equip) return 
   let value = event.srcElement.innerText; 
   let id = event.srcElement.id; 
   let target = event.srcElement ? event.srcElement : event.target; 
   if(id !== '' && id === 'del'){//如果点击的是id为del的表示是删除 
    this.emitValue(id); 
   }else{//否则 
    value && id !== 'del'? this.emitValue(value) : this.tabHandle(target.classList); 
   } 
  }, 
  emitValue(key) { 
   console.log(key) 
   this.$emit('keyVal', key) 
  }, 
  closeModal(e) { 
   if (e.target !== this.option.sourceDom) { 
    // this.showKeyboard = false 
    this.$emit('close', false) 
   } 
  } 
 } 
} 
</script> 
<style scoped lang="less"> 
keyboard { 
  display: inline-block; 
 width: 263px; 
 font-size: 18px; 
 border-radius: 2px; 
 background-color: #e5e6e8; 
 user-select: none; 
 bottom: 0; 
 position: absolute;/*定位数字键盘*/ 
 left: -20px; 
 top: 77px; 
 z-index: 999; 
 pointer-events: auto; 
 p { 
  width: 100%; 
  margin: 0 auto; 
  height: 42px; 
  margin-bottom: 0.5em; 
  display: flex; 
  display: -webkit-box; 
  flex-direction: row; 
  flex-wrap: nowrap; 
  justify-content: center; 
  i { 
   display: block; 
   margin: 0 0.2%; 
   height: 50px; 
   line-height: 52px; 
   font-style: normal; 
   font-size: 24px; 
   border-radius: 3px; 
   width: 44px; 
   background-color: #fff; 
   text-align: center; 
   flex-grow: 1; 
   flex-shrink: 1; 
   flex-basis: 0; 
   -webkit-box-flex: 1; 
   &:active { 
    background-color: darken(#ccc, 10%); 
   } 
  } 
  .tab-top { 
   width: 50px; 
   margin: 0 1%; 
   background: #cccdd0; 
   color: #fff; 
   font-size: 24px; 
  } 
  .key-delete { 
   width: 47px; 
   margin: 0 0.2%; 
   color: #827f7f; 
   background: ; 
  } 
  .tab-num { 
   font-size: 18px; 
   background: #dedede; 
   color: #5a5959; 
  } 
  .tab-point { 
   width: 20px; 
  } 
  .tab-blank { 
   width: 50px; 
   font-size: 12px; 
   padding: 0 15px; 
   color: #5a5959; 
   line-height: 60px; 
  } 
  .tab-symbol { 
   width: 20px; 
   font-size: 18px; 
  } 
  .tab-enter { 
   font-size: 30px; 
   line-height: 54px; 
  } 
  &:nth-child(2) { 
   width: 100%; 
  } 
 } 
} 
</style>

在使用页面引入代码:

html代码

vue引入js数字小键盘的实现代码

引入数字小键盘vue

vue引入js数字小键盘的实现代码

注册引入的主键

vue引入js数字小键盘的实现代码

定义的method

vue引入js数字小键盘的实现代码

总结

以上所述是小编给大家介绍的vue引入js数字小键盘的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQuery EasyUI 日期控件如何控制日期选择区间
May 05 Javascript
JS实现的3D拖拽翻页效果代码
Oct 31 Javascript
JS实现动态增加和删除li标签行的实例代码
Oct 16 Javascript
详解如何在Vue2中实现组件props双向绑定
Mar 29 Javascript
jQuery Tree Multiselect使用详解
May 02 jQuery
Vue.js数据绑定之data属性
Jul 07 Javascript
基于ES6作用域和解构赋值详解
Nov 03 Javascript
JS实现点击拉拽轮播图pc端移动端适配
Sep 05 Javascript
详解搭建es6+devServer简单开发环境
Sep 25 Javascript
使用vue完成微信公众号网页小记(推荐)
Apr 28 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
May 18 Javascript
JavaScript中break、continue和return的用法区别实例分析
Mar 02 Javascript
vue移动端路由切换实例分析
May 14 #Javascript
对node.js中render和send的用法详解
May 14 #Javascript
利用vscode调试编译后的js代码详解
May 14 #Javascript
vue的toast弹窗组件实例详解
May 14 #Javascript
Vue页面骨架屏注入方法
May 13 #Javascript
浅谈在node.js进入文件目录的问题
May 13 #Javascript
解决node修改后需频繁手动重启的问题
May 13 #Javascript
You might like
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
中东人咖啡哲学
2021/03/03 咖啡文化
第十四节--命名空间
2006/11/16 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
p5.js实现简单货车运动动画
2019/10/23 Javascript
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
Python高效编程技巧
2013/01/07 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
在Mac OS上搭建Python的开发环境
2015/12/24 Python
Python的面向对象编程方式学习笔记
2016/07/12 Python
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
How TDD works
2012/09/30 面试题
护理学毕业生自荐信
2013/10/02 职场文书
连锁经营管理专业大学生求职信
2013/10/30 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
学生违反校规检讨书
2014/10/28 职场文书
先进典型事迹材料
2014/12/29 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书