在使用element-ui
的el-date-picker
组件时,需要获取到字符串格式的时间,且格式为yyyy-MM-dd HH:mm:ss
,开始写的代码如下:
<el-col :span="24">
<el-form-item label="注册时间" prop="signTime">
<el-date-picker v-model="temp.signTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" placeholder="请选择时间"></el-date-picker>
</el-form-item>
</el-col>
校验规则是这样写的:
signTime: [ { type:'date', required: true, message: '请选择时间', trigger: 'change' }]
然后每次选择完时间后,都会报TypeError: value.getTime is not a function
这个错:
一直不知道是什么错,后来试了一下去掉校验后,该错误就没了,所以断定是校验的问题。后来仔细一看,发现自己的校验规则写的有问题:既然需要的是字符串格式的时间,那校验规则中就不能有
type: 'date'
,否则校验时就会将signTime
当做一个时间对象来处理,type:'date'
校验规则的校验源码如下:
import rules from '../rule/';
import { isEmptyValue } from '../util';
function date(rule, value, callback, source, options) {
// console.log('integer rule called %j', rule);
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
// console.log('validate on %s value', value);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (!isEmptyValue(value)) {
rules.type(rule, value, source, errors, options);
if (value) {
rules.range(rule, value.getTime(), source, errors, options);
}
}
}
callback(errors);
}
export default date;
所以去掉校验规则中的type:'date',就OK了!