2016-07-27 14:15:02 +08:00
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
2016-08-16 21:07:27 +08:00
|
|
|
var checkAge = (rule, value, callback) => {
|
2016-11-18 18:50:29 +08:00
|
|
|
if (!value) {
|
|
|
|
return callback(new Error('年龄不能为空'));
|
|
|
|
}
|
2017-10-24 18:43:23 +08:00
|
|
|
if (!Number.isInteger(value)) {
|
|
|
|
callback(new Error('请输入数字值'));
|
|
|
|
} else {
|
|
|
|
if (value < 18) {
|
|
|
|
callback(new Error('必须年满18岁'));
|
2016-11-18 18:50:29 +08:00
|
|
|
} else {
|
2017-10-24 18:43:23 +08:00
|
|
|
callback();
|
2016-10-31 15:49:54 +08:00
|
|
|
}
|
2017-10-24 18:43:23 +08:00
|
|
|
}
|
2016-08-16 21:07:27 +08:00
|
|
|
};
|
2016-11-05 22:56:18 +08:00
|
|
|
var validatePass = (rule, value, callback) => {
|
2016-08-16 21:07:27 +08:00
|
|
|
if (value === '') {
|
|
|
|
callback(new Error('请输入密码'));
|
|
|
|
} else {
|
|
|
|
if (this.ruleForm2.checkPass !== '') {
|
|
|
|
this.$refs.ruleForm2.validateField('checkPass');
|
|
|
|
}
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
};
|
2016-11-05 22:56:18 +08:00
|
|
|
var validatePass2 = (rule, value, callback) => {
|
2016-08-16 21:07:27 +08:00
|
|
|
if (value === '') {
|
|
|
|
callback(new Error('请再次输入密码'));
|
|
|
|
} else if (value !== this.ruleForm2.pass) {
|
|
|
|
callback(new Error('两次输入密码不一致!'));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
};
|
2016-07-27 14:15:02 +08:00
|
|
|
return {
|
|
|
|
form: {
|
|
|
|
name: '',
|
|
|
|
region: '',
|
|
|
|
date1: '',
|
|
|
|
date2: '',
|
|
|
|
delivery: false,
|
|
|
|
type: [],
|
|
|
|
resource: '',
|
|
|
|
desc: ''
|
|
|
|
},
|
2017-10-22 12:35:42 +08:00
|
|
|
sizeForm: {
|
|
|
|
name: '',
|
|
|
|
region: '',
|
|
|
|
date1: '',
|
|
|
|
date2: '',
|
|
|
|
delivery: false,
|
|
|
|
type: [],
|
|
|
|
resource: '',
|
|
|
|
desc: ''
|
|
|
|
},
|
2016-07-27 14:15:02 +08:00
|
|
|
formInline: {
|
|
|
|
user: '',
|
|
|
|
region: ''
|
|
|
|
},
|
2017-01-16 10:42:18 +08:00
|
|
|
labelPosition: 'right',
|
|
|
|
formLabelAlign: {
|
2016-07-27 14:15:02 +08:00
|
|
|
name: '',
|
|
|
|
region: '',
|
2016-08-29 19:19:14 +08:00
|
|
|
type: ''
|
2016-07-27 14:15:02 +08:00
|
|
|
},
|
|
|
|
ruleForm: {
|
2016-08-29 19:19:14 +08:00
|
|
|
name: '',
|
|
|
|
region: '',
|
|
|
|
date1: '',
|
|
|
|
date2: '',
|
|
|
|
delivery: false,
|
|
|
|
type: [],
|
|
|
|
resource: '',
|
|
|
|
desc: ''
|
2016-07-27 14:15:02 +08:00
|
|
|
},
|
|
|
|
ruleForm2: {
|
|
|
|
pass: '',
|
|
|
|
checkPass: '',
|
|
|
|
age: ''
|
|
|
|
},
|
|
|
|
formLabelWidth: '80px',
|
|
|
|
rules: {
|
2016-08-29 19:19:14 +08:00
|
|
|
name: [
|
2016-10-13 11:14:02 +08:00
|
|
|
{ required: true, message: '请输入活动名称', trigger: 'blur' },
|
|
|
|
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
2016-08-29 19:19:14 +08:00
|
|
|
region: [
|
|
|
|
{ required: true, message: '请选择活动区域', trigger: 'change' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
2016-08-29 19:19:14 +08:00
|
|
|
date1: [
|
|
|
|
{ type: 'date', required: true, message: '请选择日期', trigger: 'change' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
2016-08-29 19:19:14 +08:00
|
|
|
date2: [
|
|
|
|
{ type: 'date', required: true, message: '请选择时间', trigger: 'change' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
2016-08-29 19:19:14 +08:00
|
|
|
type: [
|
|
|
|
{ type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
2016-08-29 19:19:14 +08:00
|
|
|
resource: [
|
|
|
|
{ required: true, message: '请选择活动资源', trigger: 'change' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
|
|
|
desc: [
|
2016-08-29 19:19:14 +08:00
|
|
|
{ required: true, message: '请填写活动形式', trigger: 'blur' }
|
2016-07-27 14:15:02 +08:00
|
|
|
]
|
|
|
|
},
|
|
|
|
rules2: {
|
|
|
|
pass: [
|
2016-11-18 18:50:29 +08:00
|
|
|
{ validator: validatePass, trigger: 'blur' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
|
|
|
checkPass: [
|
2016-11-18 18:50:29 +08:00
|
|
|
{ validator: validatePass2, trigger: 'blur' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
|
|
|
age: [
|
2016-11-18 18:50:29 +08:00
|
|
|
{ validator: checkAge, trigger: 'blur' }
|
2016-07-27 14:15:02 +08:00
|
|
|
]
|
|
|
|
},
|
2016-12-30 17:49:40 +08:00
|
|
|
dynamicValidateForm: {
|
2016-08-16 21:07:27 +08:00
|
|
|
domains: [{
|
2016-11-26 10:48:06 +08:00
|
|
|
value: '',
|
|
|
|
key: Date.now()
|
2016-08-16 21:07:27 +08:00
|
|
|
}],
|
2016-07-27 14:15:02 +08:00
|
|
|
email: ''
|
|
|
|
},
|
2016-12-30 17:49:40 +08:00
|
|
|
numberValidateForm: {
|
|
|
|
age: ''
|
2016-07-27 14:15:02 +08:00
|
|
|
}
|
|
|
|
};
|
|
|
|
},
|
|
|
|
methods: {
|
2016-12-30 17:49:40 +08:00
|
|
|
onSubmit() {
|
|
|
|
console.log('submit!');
|
2016-07-27 14:15:02 +08:00
|
|
|
},
|
2016-12-30 17:49:40 +08:00
|
|
|
submitForm(formName) {
|
|
|
|
this.$refs[formName].validate((valid) => {
|
2016-07-27 14:15:02 +08:00
|
|
|
if (valid) {
|
2016-12-30 17:49:40 +08:00
|
|
|
alert('submit!');
|
2016-07-27 14:15:02 +08:00
|
|
|
} else {
|
|
|
|
console.log('error submit!!');
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
2016-12-30 17:49:40 +08:00
|
|
|
resetForm(formName) {
|
|
|
|
this.$refs[formName].resetFields();
|
2016-08-16 21:07:27 +08:00
|
|
|
},
|
|
|
|
removeDomain(item) {
|
2016-12-30 17:49:40 +08:00
|
|
|
var index = this.dynamicValidateForm.domains.indexOf(item)
|
2016-08-16 21:07:27 +08:00
|
|
|
if (index !== -1) {
|
2016-12-30 17:49:40 +08:00
|
|
|
this.dynamicValidateForm.domains.splice(index, 1)
|
2016-08-16 21:07:27 +08:00
|
|
|
}
|
|
|
|
},
|
|
|
|
addDomain() {
|
2016-12-30 17:49:40 +08:00
|
|
|
this.dynamicValidateForm.domains.push({
|
2016-11-26 10:48:06 +08:00
|
|
|
value: '',
|
|
|
|
key: Date.now()
|
2016-08-16 21:07:27 +08:00
|
|
|
});
|
2016-07-27 14:15:02 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style>
|
2016-11-10 23:50:55 +08:00
|
|
|
.demo-form.demo-zh-CN {
|
2016-09-01 14:40:41 +08:00
|
|
|
.el-select .el-input {
|
2017-10-16 14:07:24 +08:00
|
|
|
width: 380px;
|
2016-09-01 14:40:41 +08:00
|
|
|
}
|
2016-08-29 19:19:14 +08:00
|
|
|
.el-form {
|
2017-10-16 14:07:24 +08:00
|
|
|
width: 460px;
|
2016-07-27 14:15:02 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.line {
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-checkbox-group {
|
|
|
|
width: 320px;
|
|
|
|
margin: 0;
|
|
|
|
padding: 0;
|
|
|
|
list-style: none;
|
|
|
|
|
2016-12-28 18:33:45 +08:00
|
|
|
&:after, &:before {
|
2016-07-27 14:15:02 +08:00
|
|
|
content: ' ';
|
|
|
|
display: table;
|
|
|
|
}
|
|
|
|
&:after {
|
|
|
|
clear: both;
|
|
|
|
visibility: hidden;
|
|
|
|
font-size: 0;
|
|
|
|
height: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.el-checkbox {
|
|
|
|
float: left;
|
|
|
|
width: 160px;
|
|
|
|
padding-right: 20px;
|
|
|
|
margin: 0;
|
|
|
|
padding: 0;
|
|
|
|
|
|
|
|
+ .el-checkbox {
|
|
|
|
margin-left: 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2016-08-29 19:19:14 +08:00
|
|
|
.demo-form-normal {
|
2017-10-16 14:07:24 +08:00
|
|
|
width: 460px;
|
2016-07-27 14:15:02 +08:00
|
|
|
}
|
2016-08-29 19:19:14 +08:00
|
|
|
.demo-form-inline {
|
2017-02-20 11:22:08 +08:00
|
|
|
width: auto;
|
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
.el-input {
|
|
|
|
width: 150px;
|
|
|
|
}
|
|
|
|
> * {
|
|
|
|
margin-right: 10px;
|
|
|
|
}
|
2016-07-27 14:15:02 +08:00
|
|
|
}
|
2016-08-29 19:19:14 +08:00
|
|
|
.demo-ruleForm {
|
|
|
|
width: 460px;
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-09-01 14:40:41 +08:00
|
|
|
.el-select .el-input {
|
|
|
|
width: 360px;
|
|
|
|
}
|
2016-07-27 14:15:02 +08:00
|
|
|
}
|
2016-08-29 19:19:14 +08:00
|
|
|
.demo-dynamic {
|
|
|
|
.el-input {
|
|
|
|
margin-right: 10px;
|
|
|
|
width: 270px;
|
2016-10-14 23:47:26 +08:00
|
|
|
vertical-align: top;
|
2016-08-29 19:19:14 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
.fr {
|
|
|
|
float: right;
|
2016-07-27 14:15:02 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
## Form 表单
|
|
|
|
|
|
|
|
由输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
### 典型表单
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
包括各种表单项,比如输入框、选择器、开关、单选框、多选框等。
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
::: demo 在 Form 组件中,每一个表单域由一个 Form-Item 组件构成,表单域中可以放置各种类型的表单控件,包括 Input、Select、Checkbox、Radio、Switch、DatePicker、TimePicker
|
2016-07-27 14:15:02 +08:00
|
|
|
```html
|
2016-11-08 12:29:08 +08:00
|
|
|
<el-form ref="form" :model="form" label-width="80px">
|
2016-08-29 19:19:14 +08:00
|
|
|
<el-form-item label="活动名称">
|
|
|
|
<el-input v-model="form.name"></el-input>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="活动区域">
|
2016-09-01 14:40:41 +08:00
|
|
|
<el-select v-model="form.region" placeholder="请选择活动区域">
|
2016-08-29 19:19:14 +08:00
|
|
|
<el-option label="区域一" value="shanghai"></el-option>
|
|
|
|
<el-option label="区域二" value="beijing"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="活动时间">
|
|
|
|
<el-col :span="11">
|
|
|
|
<el-date-picker type="date" placeholder="选择日期" v-model="form.date1" style="width: 100%;"></el-date-picker>
|
|
|
|
</el-col>
|
|
|
|
<el-col class="line" :span="2">-</el-col>
|
|
|
|
<el-col :span="11">
|
|
|
|
<el-time-picker type="fixed-time" placeholder="选择时间" v-model="form.date2" style="width: 100%;"></el-time-picker>
|
|
|
|
</el-col>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="即时配送">
|
2017-10-18 18:31:03 +08:00
|
|
|
<el-switch v-model="form.delivery"></el-switch>
|
2016-08-29 19:19:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="活动性质">
|
|
|
|
<el-checkbox-group v-model="form.type">
|
|
|
|
<el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox>
|
|
|
|
<el-checkbox label="地推活动" name="type"></el-checkbox>
|
|
|
|
<el-checkbox label="线下主题活动" name="type"></el-checkbox>
|
|
|
|
<el-checkbox label="单纯品牌曝光" name="type"></el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="特殊资源">
|
|
|
|
<el-radio-group v-model="form.resource">
|
|
|
|
<el-radio label="线上品牌商赞助"></el-radio>
|
|
|
|
<el-radio label="线下场地免费"></el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="活动形式">
|
|
|
|
<el-input type="textarea" v-model="form.desc"></el-input>
|
|
|
|
</el-form-item>
|
2017-07-25 12:07:41 +08:00
|
|
|
<el-form-item>
|
2016-11-08 12:29:08 +08:00
|
|
|
<el-button type="primary" @click="onSubmit">立即创建</el-button>
|
|
|
|
<el-button>取消</el-button>
|
2016-08-29 19:19:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
2016-07-27 14:15:02 +08:00
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
form: {
|
|
|
|
name: '',
|
|
|
|
region: '',
|
|
|
|
date1: '',
|
|
|
|
date2: '',
|
|
|
|
delivery: false,
|
|
|
|
type: [],
|
|
|
|
resource: '',
|
|
|
|
desc: ''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
onSubmit() {
|
|
|
|
console.log('submit!');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
```
|
2016-08-29 19:19:14 +08:00
|
|
|
:::
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
### 行内表单
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
当垂直方向空间受限且表单较简单时,可以在一行内放置表单。
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-11-05 22:56:18 +08:00
|
|
|
::: demo 设置 `inline` 属性可以让表单域变为行内的表单域
|
2016-07-27 14:15:02 +08:00
|
|
|
```html
|
2016-11-08 12:29:08 +08:00
|
|
|
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
2017-02-20 11:22:08 +08:00
|
|
|
<el-form-item label="审批人">
|
2016-08-29 19:19:14 +08:00
|
|
|
<el-input v-model="formInline.user" placeholder="审批人"></el-input>
|
2017-02-20 11:22:08 +08:00
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="活动区域">
|
2016-09-01 14:40:41 +08:00
|
|
|
<el-select v-model="formInline.region" placeholder="活动区域">
|
2016-08-29 19:19:14 +08:00
|
|
|
<el-option label="区域一" value="shanghai"></el-option>
|
|
|
|
<el-option label="区域二" value="beijing"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item><el-form-item>
|
2016-11-08 12:29:08 +08:00
|
|
|
<el-button type="primary" @click="onSubmit">查询</el-button>
|
2016-08-29 19:19:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
2016-07-27 14:15:02 +08:00
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
formInline: {
|
|
|
|
user: '',
|
|
|
|
region: ''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
onSubmit() {
|
|
|
|
console.log('submit!');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
```
|
2016-08-29 19:19:14 +08:00
|
|
|
:::
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
### 对齐方式
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
根据具体目标和制约因素,选择最佳的标签对齐方式。
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
::: demo 通过设置 `label-position` 属性可以改变表单域标签的位置,可选值为 `top`、`left`,当设为 `top` 时标签会置于表单域的顶部
|
2016-07-27 14:15:02 +08:00
|
|
|
```html
|
2017-01-16 10:42:18 +08:00
|
|
|
<el-radio-group v-model="labelPosition" size="small">
|
|
|
|
<el-radio-button label="left">左对齐</el-radio-button>
|
|
|
|
<el-radio-button label="right">右对齐</el-radio-button>
|
|
|
|
<el-radio-button label="top">顶部对齐</el-radio-button>
|
|
|
|
</el-radio-group>
|
|
|
|
<div style="margin: 20px;"></div>
|
|
|
|
<el-form :label-position="labelPosition" label-width="80px" :model="formLabelAlign">
|
2016-08-29 19:19:14 +08:00
|
|
|
<el-form-item label="名称">
|
2017-01-16 10:42:18 +08:00
|
|
|
<el-input v-model="formLabelAlign.name"></el-input>
|
2016-08-29 19:19:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="活动区域">
|
2017-01-16 10:42:18 +08:00
|
|
|
<el-input v-model="formLabelAlign.region"></el-input>
|
2016-08-29 19:19:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="活动形式">
|
2017-01-16 10:42:18 +08:00
|
|
|
<el-input v-model="formLabelAlign.type"></el-input>
|
2016-08-29 19:19:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
2016-07-27 14:15:02 +08:00
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
2017-01-16 10:42:18 +08:00
|
|
|
labelPosition: 'right',
|
|
|
|
formLabelAlign: {
|
2016-08-29 19:19:14 +08:00
|
|
|
name: '',
|
|
|
|
region: '',
|
|
|
|
type: ''
|
2016-07-27 14:15:02 +08:00
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
```
|
2016-08-29 19:19:14 +08:00
|
|
|
:::
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
### 表单验证
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
在防止用户犯错的前提下,尽可能让用户更早地发现并纠正错误。
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2017-10-24 11:53:06 +08:00
|
|
|
::: demo Form 组件提供了表单验证的功能,只需要通过 `rules` 属性传入约定的验证规则,并 Form-Item 的 `prop` 属性设置为需校验的字段名即可。校验规则参见 [async-validator](https://github.com/yiminghe/async-validator)
|
2016-07-27 14:15:02 +08:00
|
|
|
```html
|
2017-09-19 22:35:57 +08:00
|
|
|
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
|
2016-08-29 19:19:14 +08:00
|
|
|
<el-form-item label="活动名称" prop="name">
|
|
|
|
<el-input v-model="ruleForm.name"></el-input>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="活动区域" prop="region">
|
2016-09-01 14:40:41 +08:00
|
|
|
<el-select v-model="ruleForm.region" placeholder="请选择活动区域">
|
2016-08-29 19:19:14 +08:00
|
|
|
<el-option label="区域一" value="shanghai"></el-option>
|
|
|
|
<el-option label="区域二" value="beijing"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
2016-10-12 13:51:33 +08:00
|
|
|
<el-form-item label="活动时间" required>
|
2016-08-29 19:19:14 +08:00
|
|
|
<el-col :span="11">
|
|
|
|
<el-form-item prop="date1">
|
|
|
|
<el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.date1" style="width: 100%;"></el-date-picker>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col class="line" :span="2">-</el-col>
|
|
|
|
<el-col :span="11">
|
|
|
|
<el-form-item prop="date2">
|
|
|
|
<el-time-picker type="fixed-time" placeholder="选择时间" v-model="ruleForm.date2" style="width: 100%;"></el-time-picker>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-form-item>
|
2016-12-08 11:50:00 +08:00
|
|
|
<el-form-item label="即时配送" prop="delivery">
|
2017-10-18 18:31:03 +08:00
|
|
|
<el-switch v-model="ruleForm.delivery"></el-switch>
|
2016-08-29 19:19:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="活动性质" prop="type">
|
|
|
|
<el-checkbox-group v-model="ruleForm.type">
|
|
|
|
<el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox>
|
|
|
|
<el-checkbox label="地推活动" name="type"></el-checkbox>
|
|
|
|
<el-checkbox label="线下主题活动" name="type"></el-checkbox>
|
|
|
|
<el-checkbox label="单纯品牌曝光" name="type"></el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="特殊资源" prop="resource">
|
|
|
|
<el-radio-group v-model="ruleForm.resource">
|
|
|
|
<el-radio label="线上品牌商赞助"></el-radio>
|
|
|
|
<el-radio label="线下场地免费"></el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="活动形式" prop="desc">
|
|
|
|
<el-input type="textarea" v-model="ruleForm.desc"></el-input>
|
|
|
|
</el-form-item>
|
2017-07-25 12:07:41 +08:00
|
|
|
<el-form-item>
|
2016-12-30 17:49:40 +08:00
|
|
|
<el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
|
|
|
|
<el-button @click="resetForm('ruleForm')">重置</el-button>
|
2016-08-29 19:19:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
2016-07-27 14:15:02 +08:00
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
ruleForm: {
|
2016-08-29 19:19:14 +08:00
|
|
|
name: '',
|
|
|
|
region: '',
|
|
|
|
date1: '',
|
|
|
|
date2: '',
|
|
|
|
delivery: false,
|
|
|
|
type: [],
|
|
|
|
resource: '',
|
|
|
|
desc: ''
|
2016-07-27 14:15:02 +08:00
|
|
|
},
|
|
|
|
rules: {
|
2016-08-29 19:19:14 +08:00
|
|
|
name: [
|
2016-11-05 22:56:18 +08:00
|
|
|
{ required: true, message: '请输入活动名称', trigger: 'blur' },
|
|
|
|
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
2016-08-29 19:19:14 +08:00
|
|
|
region: [
|
|
|
|
{ required: true, message: '请选择活动区域', trigger: 'change' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
2016-08-29 19:19:14 +08:00
|
|
|
date1: [
|
|
|
|
{ type: 'date', required: true, message: '请选择日期', trigger: 'change' }
|
2016-08-16 21:07:27 +08:00
|
|
|
],
|
2016-08-29 19:19:14 +08:00
|
|
|
date2: [
|
|
|
|
{ type: 'date', required: true, message: '请选择时间', trigger: 'change' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
2016-08-29 19:19:14 +08:00
|
|
|
type: [
|
|
|
|
{ type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
2016-08-29 19:19:14 +08:00
|
|
|
resource: [
|
|
|
|
{ required: true, message: '请选择活动资源', trigger: 'change' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
|
|
|
desc: [
|
2016-08-29 19:19:14 +08:00
|
|
|
{ required: true, message: '请填写活动形式', trigger: 'blur' }
|
2016-07-27 14:15:02 +08:00
|
|
|
]
|
|
|
|
}
|
|
|
|
};
|
|
|
|
},
|
|
|
|
methods: {
|
2016-12-30 17:49:40 +08:00
|
|
|
submitForm(formName) {
|
|
|
|
this.$refs[formName].validate((valid) => {
|
2016-07-27 14:15:02 +08:00
|
|
|
if (valid) {
|
|
|
|
alert('submit!');
|
|
|
|
} else {
|
|
|
|
console.log('error submit!!');
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
});
|
2016-12-30 17:49:40 +08:00
|
|
|
},
|
|
|
|
resetForm(formName) {
|
|
|
|
this.$refs[formName].resetFields();
|
2016-07-27 14:15:02 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
```
|
2016-08-29 19:19:14 +08:00
|
|
|
:::
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
### 自定义校验规则
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2017-09-19 22:35:57 +08:00
|
|
|
这个例子中展示了如何使用自定义验证规则来完成密码的二次验证。
|
2017-09-15 10:51:17 +08:00
|
|
|
|
2017-09-19 22:35:57 +08:00
|
|
|
::: demo 本例还使用`status-icon`属性为输入框添加了表示校验结果的反馈图标。
|
2016-07-27 14:15:02 +08:00
|
|
|
```html
|
2017-09-19 22:35:57 +08:00
|
|
|
<el-form :model="ruleForm2" status-icon :rules="rules2" ref="ruleForm2" label-width="100px" class="demo-ruleForm">
|
|
|
|
<el-form-item label="密码" prop="pass">
|
2016-08-29 19:19:14 +08:00
|
|
|
<el-input type="password" v-model="ruleForm2.pass" auto-complete="off"></el-input>
|
|
|
|
</el-form-item>
|
2017-09-19 22:35:57 +08:00
|
|
|
<el-form-item label="确认密码" prop="checkPass">
|
2016-08-29 19:19:14 +08:00
|
|
|
<el-input type="password" v-model="ruleForm2.checkPass" auto-complete="off"></el-input>
|
|
|
|
</el-form-item>
|
2017-09-19 22:35:57 +08:00
|
|
|
<el-form-item label="年龄" prop="age">
|
2016-11-18 18:50:29 +08:00
|
|
|
<el-input v-model.number="ruleForm2.age"></el-input>
|
2016-08-29 19:19:14 +08:00
|
|
|
</el-form-item>
|
2017-07-25 12:07:41 +08:00
|
|
|
<el-form-item>
|
2016-12-30 17:49:40 +08:00
|
|
|
<el-button type="primary" @click="submitForm('ruleForm2')">提交</el-button>
|
|
|
|
<el-button @click="resetForm('ruleForm2')">重置</el-button>
|
2016-08-29 19:19:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
2016-07-27 14:15:02 +08:00
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
2016-08-16 21:07:27 +08:00
|
|
|
var checkAge = (rule, value, callback) => {
|
2016-11-18 18:50:29 +08:00
|
|
|
if (!value) {
|
|
|
|
return callback(new Error('年龄不能为空'));
|
|
|
|
}
|
2017-10-24 18:43:23 +08:00
|
|
|
if (!Number.isInteger(value)) {
|
|
|
|
callback(new Error('请输入数字值'));
|
|
|
|
} else {
|
|
|
|
if (value < 18) {
|
|
|
|
callback(new Error('必须年满18岁'));
|
2016-11-18 18:50:29 +08:00
|
|
|
} else {
|
2017-10-24 18:43:23 +08:00
|
|
|
callback();
|
2016-10-31 15:49:54 +08:00
|
|
|
}
|
2017-10-24 18:43:23 +08:00
|
|
|
}
|
2016-08-16 21:07:27 +08:00
|
|
|
};
|
2016-11-05 22:56:18 +08:00
|
|
|
var validatePass = (rule, value, callback) => {
|
2016-08-16 21:07:27 +08:00
|
|
|
if (value === '') {
|
|
|
|
callback(new Error('请输入密码'));
|
|
|
|
} else {
|
|
|
|
if (this.ruleForm2.checkPass !== '') {
|
|
|
|
this.$refs.ruleForm2.validateField('checkPass');
|
|
|
|
}
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
};
|
2016-11-05 22:56:18 +08:00
|
|
|
var validatePass2 = (rule, value, callback) => {
|
2016-08-16 21:07:27 +08:00
|
|
|
if (value === '') {
|
|
|
|
callback(new Error('请再次输入密码'));
|
|
|
|
} else if (value !== this.ruleForm2.pass) {
|
|
|
|
callback(new Error('两次输入密码不一致!'));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
};
|
2016-07-27 14:15:02 +08:00
|
|
|
return {
|
|
|
|
ruleForm2: {
|
|
|
|
pass: '',
|
|
|
|
checkPass: '',
|
|
|
|
age: ''
|
|
|
|
},
|
|
|
|
rules2: {
|
|
|
|
pass: [
|
2016-11-18 18:50:29 +08:00
|
|
|
{ validator: validatePass, trigger: 'blur' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
|
|
|
checkPass: [
|
2016-11-18 18:50:29 +08:00
|
|
|
{ validator: validatePass2, trigger: 'blur' }
|
2016-07-27 14:15:02 +08:00
|
|
|
],
|
|
|
|
age: [
|
2016-11-18 18:50:29 +08:00
|
|
|
{ validator: checkAge, trigger: 'blur' }
|
2016-07-27 14:15:02 +08:00
|
|
|
]
|
|
|
|
}
|
|
|
|
};
|
|
|
|
},
|
|
|
|
methods: {
|
2016-12-30 17:49:40 +08:00
|
|
|
submitForm(formName) {
|
|
|
|
this.$refs[formName].validate((valid) => {
|
2016-07-27 14:15:02 +08:00
|
|
|
if (valid) {
|
|
|
|
alert('submit!');
|
|
|
|
} else {
|
|
|
|
console.log('error submit!!');
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
});
|
2016-12-30 17:49:40 +08:00
|
|
|
},
|
|
|
|
resetForm(formName) {
|
|
|
|
this.$refs[formName].resetFields();
|
2016-07-27 14:15:02 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
```
|
2016-08-29 19:19:14 +08:00
|
|
|
:::
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
### 动态增减表单项
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
::: demo 除了在 Form 组件上一次性传递所有的验证规则外还可以在单个的表单域上传递属性的验证规则
|
2016-07-27 14:15:02 +08:00
|
|
|
```html
|
2016-12-30 17:49:40 +08:00
|
|
|
<el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="100px" class="demo-dynamic">
|
|
|
|
<el-form-item
|
|
|
|
prop="email"
|
|
|
|
label="邮箱"
|
|
|
|
:rules="[
|
|
|
|
{ required: true, message: '请输入邮箱地址', trigger: 'blur' },
|
|
|
|
{ type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur,change' }
|
|
|
|
]"
|
|
|
|
>
|
|
|
|
<el-input v-model="dynamicValidateForm.email"></el-input>
|
2016-08-29 19:19:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
<el-form-item
|
2016-12-30 17:49:40 +08:00
|
|
|
v-for="(domain, index) in dynamicValidateForm.domains"
|
2016-08-29 19:19:14 +08:00
|
|
|
:label="'域名' + index"
|
|
|
|
:key="domain.key"
|
2016-11-26 10:48:06 +08:00
|
|
|
:prop="'domains.' + index + '.value'"
|
2016-08-29 19:19:14 +08:00
|
|
|
:rules="{
|
2016-11-26 10:48:06 +08:00
|
|
|
required: true, message: '域名不能为空', trigger: 'blur'
|
2016-08-29 19:19:14 +08:00
|
|
|
}"
|
|
|
|
>
|
2016-11-20 22:39:33 +08:00
|
|
|
<el-input v-model="domain.value"></el-input><el-button @click.prevent="removeDomain(domain)">删除</el-button>
|
2016-08-29 19:19:14 +08:00
|
|
|
</el-form-item>
|
2017-07-25 12:07:41 +08:00
|
|
|
<el-form-item>
|
2016-12-30 17:49:40 +08:00
|
|
|
<el-button type="primary" @click="submitForm('dynamicValidateForm')">提交</el-button>
|
2016-11-08 12:29:08 +08:00
|
|
|
<el-button @click="addDomain">新增域名</el-button>
|
2016-12-30 17:49:40 +08:00
|
|
|
<el-button @click="resetForm('dynamicValidateForm')">重置</el-button>
|
2016-08-29 19:19:14 +08:00
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
2016-07-27 14:15:02 +08:00
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
2016-12-30 17:49:40 +08:00
|
|
|
dynamicValidateForm: {
|
2016-08-16 21:07:27 +08:00
|
|
|
domains: [{
|
|
|
|
value: ''
|
|
|
|
}],
|
2016-07-27 14:15:02 +08:00
|
|
|
email: ''
|
|
|
|
}
|
|
|
|
};
|
|
|
|
},
|
|
|
|
methods: {
|
2016-12-30 17:49:40 +08:00
|
|
|
submitForm(formName) {
|
|
|
|
this.$refs[formName].validate((valid) => {
|
2016-07-27 14:15:02 +08:00
|
|
|
if (valid) {
|
|
|
|
alert('submit!');
|
|
|
|
} else {
|
|
|
|
console.log('error submit!!');
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
});
|
2016-08-16 21:07:27 +08:00
|
|
|
},
|
2016-12-30 17:49:40 +08:00
|
|
|
resetForm(formName) {
|
|
|
|
this.$refs[formName].resetFields();
|
2016-11-26 10:48:06 +08:00
|
|
|
},
|
2016-08-16 21:07:27 +08:00
|
|
|
removeDomain(item) {
|
2016-12-30 17:49:40 +08:00
|
|
|
var index = this.dynamicValidateForm.domains.indexOf(item)
|
2016-08-16 21:07:27 +08:00
|
|
|
if (index !== -1) {
|
2016-12-30 17:49:40 +08:00
|
|
|
this.dynamicValidateForm.domains.splice(index, 1)
|
2016-08-16 21:07:27 +08:00
|
|
|
}
|
|
|
|
},
|
|
|
|
addDomain() {
|
2016-12-30 17:49:40 +08:00
|
|
|
this.dynamicValidateForm.domains.push({
|
2016-11-26 10:48:06 +08:00
|
|
|
value: '',
|
|
|
|
key: Date.now()
|
2016-08-16 21:07:27 +08:00
|
|
|
});
|
2016-07-27 14:15:02 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
```
|
2016-08-29 19:19:14 +08:00
|
|
|
:::
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-12-30 17:49:40 +08:00
|
|
|
### 数字类型验证
|
|
|
|
|
|
|
|
::: demo 数字类型的验证需要在 `v-model` 处加上 `.number` 的修饰符,这是 `Vue` 自身提供的用于将绑定值转化为 `number` 类型的修饰符。
|
|
|
|
```html
|
|
|
|
<el-form :model="numberValidateForm" ref="numberValidateForm" label-width="100px" class="demo-ruleForm">
|
|
|
|
<el-form-item
|
|
|
|
label="年龄"
|
|
|
|
prop="age"
|
|
|
|
:rules="[
|
|
|
|
{ required: true, message: '年龄不能为空'},
|
|
|
|
{ type: 'number', message: '年龄必须为数字值'}
|
|
|
|
]"
|
|
|
|
>
|
|
|
|
<el-input type="age" v-model.number="numberValidateForm.age" auto-complete="off"></el-input>
|
|
|
|
</el-form-item>
|
2017-07-25 12:07:41 +08:00
|
|
|
<el-form-item>
|
2016-12-30 17:49:40 +08:00
|
|
|
<el-button type="primary" @click="submitForm('numberValidateForm')">提交</el-button>
|
|
|
|
<el-button @click="resetForm('numberValidateForm')">重置</el-button>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
numberValidateForm: {
|
|
|
|
age: ''
|
|
|
|
}
|
|
|
|
};
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
submitForm(formName) {
|
|
|
|
this.$refs[formName].validate((valid) => {
|
|
|
|
if (valid) {
|
|
|
|
alert('submit!');
|
|
|
|
} else {
|
|
|
|
console.log('error submit!!');
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
resetForm(formName) {
|
|
|
|
this.$refs[formName].resetFields();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
```
|
|
|
|
:::
|
|
|
|
|
2017-07-04 18:02:05 +08:00
|
|
|
:::tip
|
2017-07-25 12:07:41 +08:00
|
|
|
嵌套在 `el-form-item` 中的 `el-form-item` 标签宽度默认为零,不会继承 `el-form` 的 `label-width`。如果需要可以为其单独设置 `label-width` 属性。
|
2017-07-04 18:02:05 +08:00
|
|
|
:::
|
|
|
|
|
2017-10-12 17:50:06 +08:00
|
|
|
### 表单内组件尺寸控制
|
|
|
|
|
|
|
|
通过设置 Form 上的 `size` 属性可以使该表单内所有可调节大小的组件继承该尺寸。Form-Item 也具有该属性。
|
|
|
|
|
|
|
|
::: demo 如果希望某个表单项或某个表单组件的尺寸不同于 Form 上的`size`属性,直接为这个表单项或表单组件设置自己的`size`即可。
|
|
|
|
```html
|
2017-10-22 12:35:42 +08:00
|
|
|
<el-form ref="form" :model="sizeForm" label-width="80px" size="mini">
|
2017-10-12 17:50:06 +08:00
|
|
|
<el-form-item label="活动名称">
|
2017-10-22 12:35:42 +08:00
|
|
|
<el-input v-model="sizeForm.name"></el-input>
|
2017-10-12 17:50:06 +08:00
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="活动区域">
|
2017-10-22 12:35:42 +08:00
|
|
|
<el-select v-model="sizeForm.region" placeholder="请选择活动区域">
|
2017-10-12 17:50:06 +08:00
|
|
|
<el-option label="区域一" value="shanghai"></el-option>
|
|
|
|
<el-option label="区域二" value="beijing"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="活动时间">
|
|
|
|
<el-col :span="11">
|
2017-10-22 12:35:42 +08:00
|
|
|
<el-date-picker type="date" placeholder="选择日期" v-model="sizeForm.date1" style="width: 100%;"></el-date-picker>
|
2017-10-12 17:50:06 +08:00
|
|
|
</el-col>
|
|
|
|
<el-col class="line" :span="2">-</el-col>
|
|
|
|
<el-col :span="11">
|
2017-10-22 12:35:42 +08:00
|
|
|
<el-time-picker type="fixed-time" placeholder="选择时间" v-model="sizeForm.date2" style="width: 100%;"></el-time-picker>
|
2017-10-12 17:50:06 +08:00
|
|
|
</el-col>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="活动性质">
|
2017-10-22 12:35:42 +08:00
|
|
|
<el-checkbox-group v-model="sizeForm.type">
|
2017-10-12 17:50:06 +08:00
|
|
|
<el-checkbox-button label="美食/餐厅线上活动" name="type"></el-checkbox-button>
|
|
|
|
<el-checkbox-button label="地推活动" name="type"></el-checkbox-button>
|
|
|
|
<el-checkbox-button label="线下主题活动" name="type"></el-checkbox-button>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="特殊资源">
|
2017-10-22 12:35:42 +08:00
|
|
|
<el-radio-group v-model="sizeForm.resource" size="medium">
|
2017-10-12 17:50:06 +08:00
|
|
|
<el-radio border label="线上品牌商赞助"></el-radio>
|
|
|
|
<el-radio border label="线下场地免费"></el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item size="large">
|
|
|
|
<el-button type="primary" @click="onSubmit">立即创建</el-button>
|
|
|
|
<el-button>取消</el-button>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
2017-10-22 12:35:42 +08:00
|
|
|
|
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
sizeForm: {
|
|
|
|
name: '',
|
|
|
|
region: '',
|
|
|
|
date1: '',
|
|
|
|
date2: '',
|
|
|
|
delivery: false,
|
|
|
|
type: [],
|
|
|
|
resource: '',
|
|
|
|
desc: ''
|
|
|
|
}
|
|
|
|
};
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
onSubmit() {
|
|
|
|
console.log('submit!');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|
2017-10-12 17:50:06 +08:00
|
|
|
```
|
|
|
|
:::
|
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
### Form Attributes
|
2016-07-27 14:15:02 +08:00
|
|
|
|
|
|
|
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
|
|
|---------- |-------------- |---------- |-------------------------------- |-------- |
|
2016-08-29 19:19:14 +08:00
|
|
|
| model | 表单数据对象 | object | — | — |
|
|
|
|
| rules | 表单验证规则 | object | — | — |
|
2016-10-27 21:57:40 +08:00
|
|
|
| inline | 行内表单模式 | boolean | — | false |
|
|
|
|
| label-position | 表单域标签的位置 | string | right/left/top | right |
|
2017-07-25 12:07:41 +08:00
|
|
|
| label-width | 表单域标签的宽度,作为 Form 直接子元素的 form-item 会继承该值 | string | — | — |
|
2016-08-29 19:19:14 +08:00
|
|
|
| label-suffix | 表单域标签的后缀 | string | — | — |
|
2017-01-12 02:34:15 +08:00
|
|
|
| show-message | 是否显示校验错误信息 | boolean | — | true |
|
2017-09-19 22:35:57 +08:00
|
|
|
| inline-message | 是否以行内形式展示校验信息 | boolean | — | false |
|
|
|
|
| status-icon | 是否在输入框中显示校验结果反馈图标 | boolean | — | false |
|
2017-10-12 17:50:06 +08:00
|
|
|
| size | 用于控制该表单内组件的尺寸 | string | medium / small / mini | - |
|
2016-08-29 19:19:14 +08:00
|
|
|
|
|
|
|
### Form Methods
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-12-29 21:58:58 +08:00
|
|
|
| 方法名 | 说明 | 参数
|
|
|
|
|---------- |-------------- | --------------
|
2017-10-16 18:05:40 +08:00
|
|
|
| validate | 对整个表单进行校验的方法。若不传入回调函数,则会返回一个 promise | Function(callback: Function(boolean))
|
2016-12-29 21:58:58 +08:00
|
|
|
| validateField | 对部分表单字段进行校验的方法 | Function(prop: string, callback: Function(errorMessage: string))
|
2017-03-03 09:01:08 +08:00
|
|
|
| resetFields | 对整个表单进行重置,将所有字段值重置为初始值并移除校验结果 | -
|
2017-10-22 12:35:42 +08:00
|
|
|
| clearValidate | 移除整个表单的校验结果 | -
|
2016-07-27 14:15:02 +08:00
|
|
|
|
2016-08-29 19:19:14 +08:00
|
|
|
### Form-Item Attributes
|
2016-07-27 14:15:02 +08:00
|
|
|
|
|
|
|
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
|
|
|---------- |-------------- |---------- |-------------------------------- |-------- |
|
2017-05-21 13:34:02 +08:00
|
|
|
| prop | 表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的 | string | 传入 Form 组件的 `model` 中的字段 | — |
|
2016-08-29 19:19:14 +08:00
|
|
|
| label | 标签文本 | string | — | — |
|
|
|
|
| label-width | 表单域标签的的宽度,例如 '50px' | string | — | — |
|
|
|
|
| required | 是否必填,如不设置,则会根据校验规则自动生成 | bolean | — | false |
|
2016-11-18 22:05:31 +08:00
|
|
|
| rules | 表单验证规则 | object | — | — |
|
2016-11-19 15:32:19 +08:00
|
|
|
| error | 表单域验证错误信息, 设置该值会使表单验证状态变为`error`,并显示该错误信息 | string | — | — |
|
2017-01-12 02:34:15 +08:00
|
|
|
| show-message | 是否显示校验错误信息 | boolean | — | true |
|
2017-09-18 00:47:37 +08:00
|
|
|
| inline-message | 以行内形式展示校验信息 | boolean | — | false |
|
2017-10-12 17:50:06 +08:00
|
|
|
| size | 用于控制该表单域下组件的尺寸 | string | medium / small / mini | - |
|
2017-05-03 17:51:18 +08:00
|
|
|
|
|
|
|
### Form-Item Slot
|
|
|
|
| name | 说明 |
|
|
|
|
|------|--------|
|
|
|
|
| — | Form Item 的内容 |
|
|
|
|
| label | 标签文本的内容 |
|
2017-10-01 20:22:15 +08:00
|
|
|
|
|
|
|
### Form-Item Methods
|
|
|
|
|
|
|
|
| 方法名 | 说明 | 参数
|
|
|
|
|---------- |-------------- | --------------
|
|
|
|
| resetField | 对该表单项进行重置,将其值重置为初始值并移除校验结果 | -
|