封装vue数字键盘输入框组件

图片:

  

父组件:

  

<template>

<div class="pickerDemo">

<input type="text" v-model="keybValue" />

<keyBoard :value="keybValue" @keyChange="keyChange" maxlen="6" :valueList="valueList"/>

<div class="inputPas">

<div v-for="(item,index) in inputsValue" :key="index">{{item}}</div>

</div>

<div @click="clickMe">点击我添加验证码</div>

</div>

</template>

<script>

import keyBoard from ‘./keyBoard‘

export default {

name: ‘date‘,

data () {

return {

valueList:‘‘,

keybValue:‘‘,

maxlen:6,

inputsValue:[,,,,,,]

}

},

components: {

keyBoard,

},

mounted () {

},

methods: {

clickMe(){

this.valueList="124665"

},

keyChange(v){

this.keybValue=v;

  this.inputsValue=[,,,,,,];

v.split("").map((m,k)=>{

this.inputsValue[k]=m;

})

},

}

}

</script>

子组件:

  

<template>

<div>

<div class="yzmTitle" v-if="valueLists!=‘‘" @click="yzmTitleClick">验证码为“{{valueLists}}”</div>

<div class="keysBox">

<div

v-for="(m,index) in keys"

@click="clickKey(m,index)"

:class="(index==keyIndex?‘active‘:‘‘ )+ (m===‘‘ || m==‘X‘?‘bgHs‘:‘‘)"

>

{{m}}

</div>

</div>

</div>

</template>

<script>

export default {

data(){

return {

keys:[1,2,3,4,5,6,7,8,9,"",0,‘X‘],

keyIndex:-1,

values:‘‘,

valueLists:"",

}

},

props:["value","maxlen","valueList"],

watch:{

value(newVal){

this.values=newVal

},

valueList(newVal){

this.valueLists=newVal;

}

},

mounted(){

this.values=this.value;

if(this.valueList){

this.valueLists=this.valueList;

}else{

this.valueLists="";

}

},

methods:{

yzmTitleClick(){

this.$emit(‘keyChange‘,this.valueLists)

},

clickKey(m,ind){

if(m==="" || m==undefined){

return

}else{

if(m==‘X‘){

this.clickStyle(ind)

this.values=this.values.substr(0,this.values.length-1)

}else{

if(this.values.length>=this.maxlen){

return false;

}else{

this.clickStyle(ind)

this.values=this.values+m

}

}

this.$emit(‘keyChange‘,this.values)

}

},

clickStyle(ind){

this.keyIndex=ind;

setTimeout(()=>{

this.keyIndex=-1

},300)

}

}

}

</script>

<style>

.yzmTitle{

height: 30px;

font-size: 16px;

color: #333;

text-align: center;

}

.keysBox{

width: 100%;

height: 400px;

}

.keysBox>div{

width: 33.33%;

height: 50px;

line-height: 50px;

text-align: center;

float: left;

border: 1px solid #f5f5f5;

box-sizing: border-box;

}

.keysBox .active{

background: #eee;

color: #333333;

}

.bgHs{

background: #eee;

}

</style>

  

有更好的欢迎沟通,勿喷。

原文地址:https://www.cnblogs.com/laiqiangjin/p/11131076.html

时间: 2024-08-13 02:33:01

封装vue数字键盘输入框组件的相关文章

自定义数字键盘组件化方案

实现场景:点击输入框,弹出自定义数字键盘,输入数字后点击确定,输入框中显示对应数字.如果输入框中有值,则默认带到小键盘中. 其中:数字键盘为子组件.输入框公用该子组件. 效果图如下: 难点: 1.props传入数字键盘组件中的值,无法直接修改.需要通过计算属性进行修改. 2.公用键盘时,保证符合预期,数字不会错乱.使用v-for,巧用name属性,通过点击时更改传入的参数,达到目的. 下面时完整代码: index.vue <template> <view class="cont

设置警告框为带有一个密文输入框的样式,并设置输入框键盘为数字键盘;判断密文输入框里的内容,并弹出相应提示

项目需求 废话不说,直接上试题 及答案 代码 #import "TableViewController.h" @interface TableViewController ()<UIAlertViewDelegate> @property (nonatomic, strong) NSMutableArray * dataSource; - (IBAction)buy:(id)sender; @end @implementation TableViewController -

封装Vue组件的一些技巧

封装Vue组件的一些技巧 本文同步在个人博客shymean.com上,欢迎关注 写Vue有很长一段时间了,除了常规的业务开发之外,也应该思考和反思一下封装组件的正确方式.以弹窗组件为例,一种实现是在需要模板中引入需要弹窗展示的组件,然后通过一个flag变量来控制弹窗的组件,在业务代码里面会充斥着冗余的弹窗组件逻辑,十分不优雅. 本文整理了开发Vue组件的一些技巧,包含大量代码示例. 开发环境 vue-cli3提供了非常方便的功能,可以快速编写一些测试demo,是开发组件必备的环境.下面是安装使用

【笔记】移动端H5数字键盘input type=number的处理(IOS和Android)

在Vue中的项目,基于VUX-UI开发,一个常见的需求: 1.金额输入框 2.弹出数字键盘 3.仅支持输入两位小数,限制最大11位数,不允许0开头 第一,首先想到额就是在VUX-UI中制定type=number.--不可行 VUX中的文档和代码说明,type=number不支持maxLength,会报错,而且没有正则替换的处理或者钩子函数,只有输入后提示校验信息. 第二,基于VUX中XInput封装,有如下问题 1)两层v-model,正则替换的值不会触发input框渲染 解决:currentV

【input】输入框组件说明

input输入框组件 原型: <input value="[String]" type="[text | number | idcard | digit]" password="[Boolean]" placeholder="[String]" placeholder-style="[String]" placeholder-class="[String]" disabled=&q

Vue.js——60分钟组件快速入门(上篇)

组件简介 组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小组件来构建大型应用,任意类型的应用界面都可以抽象为一个组件树: 那么什么是组件呢?组件可以扩展HTML元素,封装可重用的HTML代码,我们可以将组件看作自定义的HTML元素. 本文的Demo和源代码已放到GitHub,如果您觉得本篇内容不错,请点个赞,或在GitHub上加个星星!(所有示例都放在GitHub Pages上了,请访问https://github.com/keepfool/vue-tut

移动开发不同手机弹出数字键盘问题

最近在做手机页面时,遇到数字输入的键盘的问题,之前的做法只是一刀切的使用 type="tel",不过一直觉得九宫格的电话号码键盘上的英文字母太碍事了.于是想要尝试其它的实现方案,最终的结论却令人沮丧.不过也趁机详细了解了下pattern这个属性. type="tel" 和 type="number" 的区别 这里还是先那么先交代一下最初遇到的问题.其实无论是tel还是number都不是完美的: type="tel" 优点是iO

第二百一十三节,jQuery EasyUI,NumberBox(数值输入框)组件

jQuery EasyUI,NumberBox(数值输入框)组件 功能:只能输入数值,和各种数值的计算 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 NumberBox(数值输入框)组件的使用方法,这个组件依赖 于 ValidateBox(验证框)组件. 一.加载方式 class 加载方式 <input type="text" class="easyui-numberbox" value="10

iOS TextField数字键盘的限制位数处理(特别适用于手机登陆)

Hi~大家好,这么长时间不和大家见面了,说来惭愧,最近忙于工作,已经很久没有写博客了, 接下来和大家分享一下在iOS下数字键盘限位的处理---好,废话不多说直接上代码 在用手机号登陆的时候大家有没有遇到这个问题? 就是一边想要输入到一定位数要限制输入,但是删除的时候还要能删除,今天小编遇到了这个问题,解决好半天,最终把它解决了,好了接下来给大家分享一下 相信大家都知道,输入框是用 UITextField的吧,其他的都不说了,要用textField的话实现代理方法,最重要的一点是设置他的键盘模式为