Element: [Bug Report] DatePicker 插件在表单中为必填选项时,给定默认值 例如 ‘2017-10-10' 执行 表单的validate 验证时 出错

Created on 3 Nov 2017  ·  5Comments  ·  Source: ElemeFE/element

Element UI version

2.0.3

OS/Browsers version

win7 chrome 62

Vue version

2.5.2

Reproduction Link

https://jsfiddle.net/plilion/r9t14qmn/

Steps to reproduce

DatePicker 插件 赋一个时间字符串 例如 '2017-10-10'
执行表单验证
报错

包括1.4.9

What is Expected?

正常验证

What is actually happening?

Most helpful comment

{ type: 'date', required: true, message: '请选择日期', trigger: 'change' }
type: 'date', 删除

All 5 comments

{ type: 'date', required: true, message: '请选择日期', trigger: 'change' }
type: 'date', 删除

https://jsfiddle.net/r9t14qmn/2/

正确的做法是不赋值给他字符串,赋值Date类型的值。

楼上说的把type:'date'删掉的话会造成无法使用验证

但是不能每次都需要格式化 很不人性化
而且官网示例用的也是字符串

这个是不是饿了么的问题,饿了么的验证好像都是基于其他库

应该是这个库。。async-validator
然后就是调用这个验证的时候,是form-item组件调用的 并不是 时间控件调用。
所以时间控件内部是有转换的
但是form-item这个组件是你传过来什么 我就把什么拿过去给他验证。
然后那个async-validator这个库呢,他也是不管。你说了类型是date类型,那好我直接就调用date类型的getTime()方法。。然后就是你懂得,看代码把
https://github.com/yiminghe/async-validator/blob/master/src/validator/date.js#L17

两个方案:

  • 如果你希望 DatePicker 返回给你一个 Date 对象,那么把初始值也赋值为一个 Date 对象,同时校验类型设置为 datehttps://jsfiddle.net/r9t14qmn/4/
  • 如果你希望 DatePicker 返回给你一个字符串,那么请使用 value-format 属性,并保持初始值为字符串: https://jsfiddle.net/r9t14qmn/3/

总之就是值的类型在各处保持统一。

Was this page helpful?
0 / 5 - 0 ratings