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 相关文章推荐
IE8 下的Js错误HTML Parsing Error...
Aug 14 Javascript
Javascript 去除数组的重复元素
May 04 Javascript
自制基于jQuery的智能提示插件一枚
Feb 18 Javascript
在JavaScript中处理数组之reverse()方法的使用
Jun 09 Javascript
JavaScript中的Math.E属性使用详解
Jun 12 Javascript
jquery实现可自动判断位置的弹出层效果代码
Oct 12 Javascript
jQuery实现磁力图片跟随效果完整示例
Sep 16 Javascript
详解JS几种变量交换方式以及性能分析对比
Nov 25 Javascript
基于Require.js使用方法(总结)
Oct 26 Javascript
微信小程序使用GoEasy实现websocket实时通讯
May 19 Javascript
vue 子组件修改data或调用操作
Aug 07 Javascript
node.js基础知识汇总
Aug 25 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
php中文本操作的类
2007/03/17 PHP
PHP中调用ASP.NET的WebService的代码
2011/04/22 PHP
php设计模式小结
2013/02/15 PHP
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
php字符集转换
2017/01/23 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
封装好的省市地区联动控件附下载
2007/08/13 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
JS将unicode码转中文方法
2017/05/08 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
2017/09/28 Javascript
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
python+selenium+autoit实现文件上传功能
2017/08/23 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
Python常见的pandas用法demo示例
2019/03/16 Python
python生成特定分布数的实例
2019/12/05 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
python中rc1什么意思
2020/06/19 Python
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
问卷调查计划书
2014/01/10 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
2014年营销工作总结
2014/11/22 职场文书
艺术节开幕词
2015/01/28 职场文书
律师函格式范本
2015/05/27 职场文书
Java基础之this关键字的使用
2021/06/30 Java/Android