zoukankan      html  css  js  c++  java
  • Vue Input输入框两侧加减框内数字组件

    NumberBox组件内容:

    <template>
        <div class="number-box" :class="{'box-disable': isDisabled}">
            <!-- 此处为“减号”标志的图片 -->
            <img class="btn-number" src="./reduce.png" @click="onReduce" />
            <div class="number-container">
                <Input v-model="strVal" @on-enter="onEnter" :disabled="isDisabled" @on-blur="onBlur" placeholeder="请输入范围" />
                <div class="unit" v-text="米" />
            </div>
            <img class="btn-number" src="./recrease.png" @click="onIncrease" />
        </div>
    </template>
    
    <script>
        export default {
            props: {
                isDisabled: {
                    type: Boolean,
                    default: false
                },
                curVal: {
                    type: Number,
                    default: 50
                },
                minVal: {
                    type: Number,
                    default: 50
                },
                maxVal: {
                    type: Number,
                    default: 1000
                }
            },
            data() {
                return {
                    numVal: this.curVal,
                    strVal: this.curVal.toString()
                }
            },
            methods: {
                onEnter() {
                    if(Number(this.strVal) <= this.minVal) {
                        this.strVal = this.minVal.toString();
                        this.numVal = this.minVal;
                    }
                    if(Number(this.strVal) >= this.maxVal) {
                        this.strVal = this.maxVal.toString();
                        this.numVal = this.maxVal;
                    }
                    
                    this.numVal = Number(this.strVal);
                    this.$emit("getNumber", this.numVal);
                },
                onBlur() {
                    this.nextTick(() => {
                        this.onEnter();
                    });
                },
                 onReduce() {
                    if(Number(this.strVal) > this.minVal) {
                        this.strVal = Number(this.strVal);
                        this.numVal -= 1;
                        this.strVal = this.numVal.toString();
                        this.$emit("getNumber", this.numVal);
                    }
                },
                onIncrease() {
                    if(Number(this.strVal) < this.maxVal) {
                        this.strVal = Number(this.strVal);
                        this.numVal += 1;
                        this.strVal = this.numVal.toString();
                        this.$emit("getNumber", this.numVal);
                    }
                },
                resetCurVal(val) {
                    this.strVal = val.toString();
                    this.numVal = val;
                    this.$emit("getNumber", this.numVal);
                }
            }
        }
    </script>
    
    <style lang="less" scoped>
        /*数字输入框*/
        .box-disable {
            pointer-events: none;
            color: #686868 !important;
        }
        .number-box {
            color: #FFF;
            dispaly: felx;
            flex-flow: row nowrap;
            justify-content: space-between;
            .btn-number {
                cursor: pointer;
                margin-top: 7px;
                width: 15px;
                height: 15px;
            }
            .number-container {
                display: flex;
                flex-flow: row nowrap;
                justify-content: space-between;
                flex-grow: 1;
                margin: 0 10px;
                background: #1F2124;
                .unit {
                    position: absolute;
                    right: 35px;
                }
            }
        }
    </style>

    以下为引用number-box.vue组件的index.vue内容:

    <template>
        <div class="main-container">
            <div class="" @click="onBackOff">
            </div>
            <number-box ref="numRange" :curVal="currentVal" :minVal="50" :maxVal=“1000” @getNumber="getNumber" />
        </div>
    </template>
    <script>
        export default {
            data() {
                return {
                    currentVal: 30
                }
            },
            methods: {
                onBackOff() {    //重置子组件输入框中的内容
                    this.$refs.numRange.resetCurVal(50);
                },
                getNumber(val) {
                    console.log("This is value of input ", val);
                }
            }
        }
    </script>
  • 相关阅读:
    数组的操作方法
    数组遍历的方法以及区别
    组件内的守卫
    路由守卫
    软件工程
    java web (j2ee)学习路线 —— 将青春交给命运
    团队作业(一)- 第五组
    软件工程
    软件工程-第二次作业
    java局部/成员/静态/实例变量
  • 原文地址:https://www.cnblogs.com/minozMin/p/9856279.html
Copyright © 2011-2022 走看看