• 技术文章 >web前端 >js教程

    怎样使用vue引入js数字小键盘

    php中世界最好的语言php中世界最好的语言2018-06-04 18:53:02原创1482
    这次给大家带来怎样使用vue引入js数字小键盘,使用vue引入js数字小键盘的注意事项有哪些,下面就是实战案例,一起来看一下。

    效果如图:

    代码如下:

    keyboard.vue

    <template> 
     <p 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> 
     </p> 
    </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

    原文链接:https://blog.csdn.net/qq_39313596/article/details/80294387 感谢原作者对此文的撰写

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    JS里常见内置函数使用详解

    如何使用js封装ajax功能函数与用法

    以上就是怎样使用vue引入js数字小键盘的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:javascript 小键盘 数字
    上一篇:怎样使用jQuery内类名选择器 下一篇:nodejs res.end与res.send使用区别有哪些
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 深入了解Angular中的依赖注入模式(玩法案例)• 如何安装并管理多版本node?方法介绍• JavaScript创建多个对象方法总结• 聊聊node+multiparty怎么实现文件上传• 简单聊聊JavaScript中的事件监听
    1/1

    PHP中文网