首页 > 编程 > JavaScript > 正文

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

2019-11-19 13:51:14
字体:
来源:转载
供稿:网友

效果如图:

代码如下:

  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

注册引入的主键

定义的method

总结

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表