iView Form表单与DatePicker日期选择器
DatePicker 的类型为datatimerange时的表单校验
<template>
<Form
ref="imageEditForm"
:model="formItem"
label-position="left"
:rules='ruleValidate'
:label-width="100">
<FormItem label="活动时间"
prop="activeTime"
:label-in-value="true"
class="selected__form">
<Date-picker type="datetimerange"
placement="bottom" placeholder="选择日期"
:value='[formItem.startTime,formItem.endTime]'
@on-change="setDateRange"
format="yyyy-MM-dd hh:mm:ss"
style="width: 300px" />
</FormItem>
<FormItem>
<Button type="primary" @click="handleSubmit('imageEditForm')">Submit</Button>
<Button @click="handleReset('imageEditForm')" style="margin-left: 8px">Reset</Button>
</FormItem>
</Form>
</template>
<script>
export default {
data () {
return {
formItem: {
activeTime:[],
startTime: [],
endTime:[]
},
ruleValidate: {
activeTime: [
{ required: true,
type:'array',
fields: {
0: { required: true, message: '请选择时间范围', trigger: 'blur' },
1: { required: true, message: '请选择时间范围', trigger: 'blur' }
}
}
],
}
}
},
methods: {
setDateRange (value) {
const isDeepEqual = (one, another) => _.isEqual(one, another);
if (isDeepEqual(value, this.selectedDateRange) || value[0] === '') {
this.selectedDateRange = ['2018-01-01 00:00:00', new Date().toLocaleString()];
} else {
this.formItem.startTime= value[0]
this.formItem.endTime= value[1]
this.formItem.activeTime = value
}
},
},
handleSubmit (name) {
this.$refs[name].validate((valid) => {
if (valid) {
this.$Message.success('Success!');
} else {
this.$Message.error('Fail!');
}
})
},
handleReset (name) {
this.$refs[name].resetFields();
}
}
</script>
在这里,还解决了双向绑定的问题。在type=datetimerange中,不能使用v-modle实现双向绑定,而是要使用:value的方法。注意format的数据格式,应该保持一致。

浙公网安备 33010602011771号