如何自定义键盘输入和格式?

时间:2019-11-19 14:17:05

标签: reactjs material-ui material-ui-pickers

我已经从material-ui-pickers 2.x升级到@material-ui/pickers 3.x(都与@date-io/moment一起升级)。现在,我在键盘输入和格式方面苦苦挣扎。

在版本2.x中,我使用了format="D.M.YYYY"。用户可以输入例如1.1.200004.08.200012.12.2000

但是对于版本3.x,输入仅严格允许1.1.2000。不能使用两位数的日期或月份。虽然我更改为format="DD.MM.YYYY",但是现在不可能输入没有前导零的1位数字的日期或月份。例如。键入1.1.2000会得到11.20.00

如何实现以下一种或两种行为?

  1. 用户可以输入任何想要的内容,包括字符(与版本2.x相同)。或者:

  2. 收听.输入,然后跳到下一个输入部分。即用户键入1.2.2000,它将设置1为一天,然后跳转到月份部分,因为用户按下了.键,然后将2设置为月份,然后跳转到年份部分,因为用户按下了.,然后将2000设置为年份。

1 个答案:

答案 0 :(得分:1)

我发现了一种使用refuserifmFormatter的情况1的解决方案:

<KeyboardDatePicker
    refuse={/[^\d\.]+/gi}
    rifmFormatter={value => value.replace(/[^\d\.]+/gi, '')}
    format={"D.M.YYYY"}
    ...
/>

这将只允许以任意顺序输入数字和点,并删除输入掩码。

不是最佳解决方案,但是比以前更好。