欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue+iview實(shí)現(xiàn)手機(jī)號(hào)分段輸入框

 更新時(shí)間:2022年03月25日 17:09:43   作者:[暫停使用]任先陽(yáng)  
這篇文章主要為大家詳細(xì)介紹了vue+iview實(shí)現(xiàn)手機(jī)號(hào)分段輸入框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

vue + iview 實(shí)現(xiàn)一個(gè)手機(jī)分段的提示框,知識(shí)點(diǎn)還沒(méi)總結(jié),供大家參考,具體內(nèi)容如下

<template>
? <div :class="{'ivu-form-item-error':!valid && dirty && validated}">
? ? <div class="ivu-phone-input ivu-select ?ivu-select-multiple ivu-select-default" @keydown.delete.prevent @click.stop>
? ? ? <input type="text" class="ivu-select-selection number-block"
? ? ? ? ? ? ?v-for="(item,index) in phoneLength" :key="index"
? ? ? ? ? ? ?:ref="numberRefName+index"
? ? ? ? ? ? ?@focus="handlerFocus"
? ? ? ? ? ? ?@input="handlerInput($event,index)"
? ? ? ? ? ? ?@keydown.delete.prevent="deleteNumber($event,index)"
? ? ? ? ? ? ?@keydown.left.prevent="changeInput(index - 1)"
? ? ? ? ? ? ?@keydown.right="changeInput(index + 1)"
? ? ? />
? ? ? <Icon type="ios-close-circle" class="clean-btn" @click="cleanValue"/>
? ? </div>
? </div>
</template>
?
<script>
? export default {
? ? data() {
? ? ? return {
? ? ? ? required: this.$attrs.hasOwnProperty('required'),
? ? ? ? phoneLength: 11,
? ? ? ? phoneReg: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/,
? ? ? ? numberRefName: 'numberBlock',
? ? ? ? validTimer: null,
? ? ? ? dirty: false,
? ? ? ? valid: false,
? ? ? ? validated: false,
? ? ? };
? ? },
? ? methods: {
?
? ? ? handlerFocus() {
? ? ? ? if (!this.dirty) {
? ? ? ? ? this.dirty = this.required ? true : false;
? ? ? ? }
? ? ? },
?
? ? ? handlerInput(e, index) {
? ? ? ? if (!e.target.value) {
? ? ? ? ? return;
? ? ? ? }
? ? ? ? this.dirty = true;
? ? ? ? let value = e.target.value.replace(/\D+/g, '');
? ? ? ? value = value ? value[0] : '';
? ? ? ? //合法值,切換下一個(gè)輸入框
? ? ? ? if (value.length) {
? ? ? ? ? this.changeInput(index + 1);
? ? ? ? }
? ? ? ? //#end
? ? ? ? e.target.value = value;
? ? ? ? this.debounceValidate();
? ? ? },
? ? ? changeInput(index) {
? ? ? ? if (index < 0 || index === this.phoneLength) return;
? ? ? ? const target = this.$refs[this.numberRefName + index][0];
? ? ? ? target.focus();
? ? ? ? if (target.value && target.setSelectionRange) {
? ? ? ? ? target.setSelectionRange(1, 1);//maxlength="1" 時(shí)無(wú)效,所以去掉了...
? ? ? ? }
? ? ? },
? ? ? deleteNumber(e, index) {
? ? ? ? if (e.target.value) {
? ? ? ? ? e.target.value = ''
? ? ? ? } else {
? ? ? ? ? this.changeInput(index - 1);
? ? ? ? }
? ? ? },
? ? ? resetStatus() {
? ? ? ? this.validated = false;
? ? ? ? this.dirty = false;
? ? ? },
? ? ? cleanValue() {
? ? ? ? this.resetStatus();
? ? ? ? const numberBlocks = this.$refs;
? ? ? ? for (let i in numberBlocks) {
? ? ? ? ? numberBlocks[i][0].value = '';
? ? ? ? }
? ? ? ? if (this.required) {
? ? ? ? ? const FormItem = this.getFormItem();
? ? ? ? ? if (FormItem) {
? ? ? ? ? ? FormItem.resetField();
? ? ? ? ? ? FormItem.$emit('on-form-change', null);
? ? ? ? ? }
? ? ? ? }
? ? ? ? // this.changeInput(0);
? ? ? },
? ? ? debounceValidate() {
? ? ? ? this.validTimer = setTimeout(() => {
? ? ? ? ? this.validate();
? ? ? ? }, 300);
? ? ? },
? ? ? validate(isLeave) {
? ? ? ? const numberBlocks = this.$refs;
? ? ? ? let result = '';
? ? ? ? for (let i in numberBlocks) {
? ? ? ? ? result += numberBlocks[i][0].value;
? ? ? ? }
? ? ? ? if (result.length === this.phoneLength || isLeave) {
? ? ? ? ? this.validated = true;
? ? ? ? ? this.dispath({
? ? ? ? ? ? value: result,
? ? ? ? ? ? valid: this.valid = this.phoneReg.test(result),
? ? ? ? ? });
? ? ? ? }
? ? ? },
? ? ? dispath(info) {
? ? ? ? this.$emit('input', info.valid ? info.value : '');
? ? ? ? if (this.required) {
? ? ? ? ? const FormItem = this.getFormItem();
? ? ? ? ? if (FormItem) {
? ? ? ? ? ? this.updateFormItem(FormItem, info.valid ? info.value : '');
? ? ? ? ? }
? ? ? ? }
? ? ? },
? ? ? getFormItem() {
? ? ? ? let MAX_LEVEL = 3;
? ? ? ? let parent = this.$parent;
? ? ? ? let name = parent.$options.name;
? ? ? ? while (MAX_LEVEL && name !== 'FormItem') {
? ? ? ? ? MAX_LEVEL--;
? ? ? ? ? if (!parent) return null;
? ? ? ? ? parent = parent.$parent;
? ? ? ? }
? ? ? ? return parent || null;
? ? ? },
? ? ? updateFormItem(FormItem, data) {
? ? ? ? FormItem.$emit('on-form-change', data);
? ? ? },
? ? ? pageEvent() {
? ? ? ? if (this.dirty) {
? ? ? ? ? this.validate(true);
? ? ? ? }
? ? ? },
? ? },
? ? created() {
? ? ? window.addEventListener('click', this.pageEvent);
? ? },
? ? beforeDestroy() {
? ? ? window.removeEventListener('click', this.pageEvent);
? ? },
? };
</script>
?
<style scoped lang="less">
? .ivu-phone-input {
? ? .clean-btn {
? ? ? transition: opacity .5s;
? ? ? opacity: 0;
? ? ? cursor: pointer;
? ? }
? ? &:hover {
? ? ? .clean-btn {
? ? ? ? opacity: 1;
? ? ? }
? ? }
? }
?
? .number-block {
? ? display: inline-block;
? ? padding: 0;
? ? height: 30px;
? ? width: 28px;
? ? text-align: center;
? ? margin-right: 2px;
? ? &:nth-child(3) {
? ? ? margin-right: 10px;
? ? }
? ? &:nth-child(7) {
? ? ? margin-right: 10px;
? ? }
? }
</style>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論