繁体   English   中英

专注于有错误的第一个输入。 问题。$ refs.array [0]

[英]Focus on first input with errors. Problem with this.$refs.array[0]

我想专注于有错误的第一个输入。 我正在使用vuelidate。

问题在于。$ refs.array [index]。$ el.focus()

控制台出错:未捕获(在承诺中)TypeError:无法读取未定义的属性“0”

但是,如果我将输入的名称放在数组的位置,一切正常!

我有这样的mixin文件

export default {
    async beforeRouteLeave(to, from, next) {
        if (this.isEditSchoolPage || this.isEditMode) {
            if (await this.showSavingDialog()) {

                if (this.$v && this.$v.$invalid) {
                    this.$v.$touch();
                    this.focusFirstError();
                    return;
                }

                await this.submit(true);
            }

            removeEventListener('beforeunload', this.leaveDialog);
        }
        next();
    },

    methods: {
        focusFirstError() {
            var invalidFields = Object.keys(this.$v.$params)
                .filter(fieldName => this.$v[fieldName].$invalid);

            if (invalidFields) {
                this.$refs.invalidFields[0].$el.focus();
                return;
            }
        },
    }
}

我在组件输入中放置了ref =“”

<v-form-group :validator="$v.taxRate" label="Sales Tax Rate (%)" label-required>
    <form-input-formatted type="percent" v-model="taxRate" ref="taxRate"/>
</v-form-group>

如果我更换

this.$refs.invalidFields[0].$el.focus();

this.$refs.taxRate.$el.focus();

它按照我的预期工作。

控制台的一些图像。 ibb.co/s36vWBQ

ibb.co/0Jqm9jD

ibb.co/rwfNJ0w

答案是:

this.$refs[invalidFields[0]].$el.focus();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM