uniapp之uView-ui简单表单验证

万变不离其宗,有此示例已经够大部分需求。

form.vue
<template>
    <view class="form-content">
        <u-form :model="form" ref="uForm" label-width="120">
            <u-form-item label="姓名" prop="name">
                <u-input v-model="form.name" />
            </u-form-item>
            <u-form-item label="简介" prop="intro">
                <u-input v-model="form.intro" />
            </u-form-item>
            <u-form-item label="手机号" prop="mobile">
                <u-input v-model="form.mobile" />
            </u-form-item>
        </u-form>

        <u-button @click="submit">提交</u-button>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                form: {
                    name: '',
                    intro: '',
                    mobile: null
                },
                rules: {
                    name: [{
                        required: true,
                        message: '请输入姓名',
                        // 可以单个或者同时写两个触发验证方式
                        trigger: 'blur'
                    }],
                    intro: [{
                        required: true,
                        min: 5,
                        message: '简介不能少于5个字',
                        trigger: 'blur'
                    }],
                    // 手机号
                    mobile: [{
                            required: true,
                            message: '请输入手机号',
                            trigger: ['change', 'blur'],
                        },
                        {
                            // 自定义验证函数,见上说明
                            validator: (rule, value, callback) => {
                                // 上面有说,返回true表示校验通过,返回false表示不通过
                                // this.$u.test.mobile()就是返回true或者false的
                                return this.$u.test.mobile(value);
                            },
                            message: '手机号码不正确',
                            // 触发器可以同时用blur和change
                            trigger: ['change', 'blur'],
                        }
                    ]
                }
            };
        },
        methods: {

            submit() {
                this.$refs.uForm.validate(valid => {
                    if (valid) {
                        console.log('验证通过');
                    } else {
                        console.log('验证失败');
                    }
                });
            }
        },
        // 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
        onReady() {
            this.$refs.uForm.setRules(this.rules);
        }
    };
</script>

<style scoped lang="scss">
    .form-content {
        padding: 30px;
    }
</style>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容