vue中实现验证码输入

vue验证码input输入解决焦点切换

有点晚了就不吐槽了,咱还是把代码上了,赶紧洗澡,养好精神明天努力上班!!!
想学node,想学react,想精进webpack,想vue学的更好一点,了解底层代码,学算法,学计算机原理,想写自己的博客网站…
这是一条学无止境的路,没办法要恰饭

效果
vue中实现验证码输入_第1张图片
html部分

<div class="verifyCode">
	<input 
		type="text"
		v-for="p in inputNums" 
		:key="p"
		@input="inputFun($event,p)"
		:value="code[p-1]"
		:class="{success: code[p-1]}"
	>
div>

js部分

export default{
	props: {
		inputNums: {
			type: Number,
			default: 6
		},
		value: {
			type: String,
			default: ''
		}
	},
	data(){
		return {
			code: this.value.split('')
		}
	},
	watch: {
		value(newVal){
			this.code = newVal.split('');
		},
		code(newVal){
			this.$emit('input',newVal.join(''));
		}
	},
	methods: {
		//1.监听用的键入,每次键入都替换掉焦点输入框的值
		//2.输入框的值只能有一位
		inputFun(e,p){
			let ele = e.target;
			let siblingsNode = ele.parentNode.children;
			if(!e.data){//删除
				this.$delete(this.code,p-1);
				if(p <= 2){//边界值
					p = 2;
				}
				siblingsNode[p-2].focus();
				return false;
			}
			let value = e.target.value.replace(/\W/g,'').slice(-1);
			ele.value = value;
			this.$set(this.code,p-1,value)
			if(p >= siblingsNode.length-1){//边界值
				p = siblingsNode.length-1;
			}
			if(value){//上一个元素获得焦点
				siblingsNode[p].focus();
			}
		}
	}
}

调用方法定义一个值,然后用v-model绑定就可以了

<verifyCode v-model="code">verifyCode>

有用就点个赞哦

你可能感兴趣的:(vue,验证码,vue输入框)