vue简单的表单验证

前端验证必不可少~

输入框验证

vue文件部分:

<form :model="form" :rules="rules" ref="form" :class="$style.form">
    <form-item :label="姓名" prop="name">
        <kc-input v-model="form.name"></kc-input>
    </form-item>
</form>

ts文件部分:

export default Vue.extend({
    data() {
        return {
            form: {
                name: "",
            },
            rules: {
                name: [
                    { required: true, message: "请输入姓名", trigger: "blur" },
                ],
            }
        }
    },
    methods: {
        // 验证
        submitForm(): void {
            const form = this.$refs.form as Vue;
            form.validate((valid: any) => {
                if (valid) {
                    this.doSave();
                } else {
                    return false;
                }
            });
        },

        doSave() {
            console.log("验证ok");
        },
    },
});

其中,需要注意的是先定义验证规则rules,form-item标签上的prop属性的值是rules中定义的,这个name在form中和rules中都要保持一致。

下拉框的验证

在上面代码的基础上增加一个下拉框的验证。

vue文件部分:

<form :model="form" :rules="rules" ref="form" :class="$style.form">
    <form-item :label="姓名" prop="name">
        <kc-input v-model="form.name"></kc-input>
    </form-item>
    <form-item :label="课程" prop="courses">
        <select v-model="form.courses" placeholder="请输入课程">
            <option    
                v-for="item in courseOption" 
                :key="item.id" 
                :label="item.name" 
                :value="item.id"
            > 
            </option>
        </select>
    </form-item>
</form>

ts文件部分:

interface Icourse {
    id: string;
    name: string;
    selected: boolean;
}
export default Vue.extend({
    data() {
        const courseOption: Icourse[] = [{    
            id: "1",
            name: "语文",
            selected: false,
        }, {
            id: "2",
            name: "数学",
            selected: false,
        }, {
            id: "3",
            name: "英语",
            selected: false,
        }];
        return {
            form: {
                name: "",
                courses: "",
            },
            courseOption,
            rules: {
                name: [
                    { required: true, message: "请输入姓名", trigger: "blur" },
                ],
                courses: [
                    { required: true, message: "请输入课程", trigger: "change" },
                ],
            }
        }
    },
    // ...
});


这里,下拉框的验证和输入框的大致一样,都需要保持form中和rules中的courses相同,只是这儿是ts的写法,多了一个ts接口。

猜你喜欢

转载自blog.csdn.net/bertZuo/article/details/89922208