# Form 表单
表单组件由输入框、单选框、多选框、计数器等组件组成
# 基础用法
在 Form 组件中,每一个表单域由一个 Form-Item 组件构成,表单域中可以放置各种类型的表单控件,包括Input、Checkbox、Radio、button
<template>
<div class="pd-form-container">
<pd-form ref="form" :model="formdata" label-width="80px">
<pd-form-item label="活动名称">
<pd-input
placeholder="请输入活动名称"
v-model="formdata.name"
clearable
></pd-input>
</pd-form-item>
<pd-form-item label="活动人数">
<pd-input-number
v-model="formdata.count"
:min="1"
:max="100"
></pd-input-number>
</pd-form-item>
<pd-form-item label="活动性质">
<pd-checkbox-group v-model="formdata.type">
<pd-checkbox label="美食餐厅线上活动"></pd-checkbox>
<pd-checkbox label="地推活动"></pd-checkbox>
<pd-checkbox label="线下主题活动"></pd-checkbox>
</pd-checkbox-group>
</pd-form-item>
<pd-form-item label="特殊资源">
<pd-radio-group v-model="formdata.resource">
<pd-radio value="线上品牌商赞助" label="线上品牌商赞助"></pd-radio>
<pd-radio value="线上品牌商赞助" label="线下场地免费"></pd-radio>
</pd-radio-group>
</pd-form-item>
<pd-form-item label="活动形式">
<pd-input
type="textarea"
v-model="formdata.desc"
placeholder="请输入活动形式"
></pd-input>
</pd-form-item>
<pd-form-item>
<pd-button type="primary">立即创建</pd-button>
<pd-button>取消</pd-button>
</pd-form-item>
</pd-form>
</div>
</template>
<script>
export default {
data() {
return {
formdata: {
name: "",
type: ["线下主题活动"],
resource: "",
desc: "",
count: 1,
pics: [],
},
};
},
};
</script>
显示代码 复制代码 复制代码
# 表单验证
Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可。
<template>
<div class="pd-form-container">
<pd-form ref="form" :model="formdata" :rules="rules" label-width="80px">
<pd-form-item label="活动名称" prop="name">
<pd-input
placeholder="请输入活动名称"
v-model="formdata.name"
clearable
></pd-input>
</pd-form-item>
<pd-form-item label="活动人数" prop="count">
<pd-input-number
v-model="formdata.count"
:min="1"
:max="100"
></pd-input-number>
</pd-form-item>
<pd-form-item label="活动性质" prop="type">
<pd-checkbox-group v-model="formdata.type">
<pd-checkbox label="美食餐厅线上活动"></pd-checkbox>
<pd-checkbox label="地推活动"></pd-checkbox>
<pd-checkbox label="线下主题活动"></pd-checkbox>
</pd-checkbox-group>
</pd-form-item>
<pd-form-item label="特殊资源" prop="resource">
<pd-radio-group v-model="formdata.resource">
<pd-radio value="线上品牌商赞助" label="线上品牌商赞助"></pd-radio>
<pd-radio value="线上品牌商赞助" label="线下场地免费"></pd-radio>
</pd-radio-group>
</pd-form-item>
<pd-form-item label="活动形式" prop="desc">
<pd-input
type="textarea"
v-model="formdata.desc"
placeholder="请输入活动形式"
></pd-input>
</pd-form-item>
<pd-form-item>
<pd-button type="primary" @click="submit">立即创建</pd-button>
<pd-button>取消</pd-button>
</pd-form-item>
</pd-form>
</div>
</template>
<script>
export default {
data() {
return {
formdata: {
name: "",
type: ["线下主题活动"],
resource: "",
desc: "",
count: 1,
pics: [],
},
rules: {
name: [
{ required: true, message: "请输入活动名称", trigger: "blur" },
],
desc: [
{ required: true, message: "请填写活动形式", trigger: "blur" },
],
type: [
{
type: "array",
required: true,
message: "请至少选择一个活动性质",
trigger: "change",
},
],
resource: [
{
required: true,
message: "请至少选择一个活动资源",
trigger: "change",
},
],
pics: [
{
type: "array",
required: true,
message: "请至少选择一张活动照片",
trigger: "change",
},
],
},
};
},
methods: {
submit() {
// 表单校验
this.$refs.form.validate((valid) => {
if (valid) {
alert("校验成功");
} else {
alert("校验失败");
return false;
}
});
},
},
};
</script>
显示代码 复制代码 复制代码