在 Safari 上使用 React 的日期选择器

Posted

技术标签:

【中文标题】在 Safari 上使用 React 的日期选择器【英文标题】:Datepicker with React on Safari 【发布时间】:2019-01-05 11:18:51 【问题描述】:

我的应用程序使用来自Semantic UI React 库的 Form.Input 来插入日期。它在 Chrome 和 Firefox 上显示日期选择器,但在 Safari 上不显示。我尝试使用 react-datepicker 库,但它具有不同的样式,并且很难将其输入与 Semantic UI React 表单中的其他输入对齐。我能做些什么?

这是 Form.Input 类型在 Safari 上不起作用的示例。

<Form.Input
    label='From'
    type='date'
    min=this.state.filters.data_inizio
    value=moment(this.state.filters.data_fine).format('YYYY-MM-DD')
    onChange=
        (e) => this.setState(
            ...this.state,
            filters: 
                ...this.state.filters,
                data_fine: moment(e.target.value).format('YYYY-MM-DD')
            
        , this.filter)
     />

【问题讨论】:

你能链接到 Semantic ui React 的日期选择器吗?我没看到。 这是一个简单的Form.Input,属性为type="date" 【参考方案1】:

坏消息。

Semantic UI React 不支持输入日期类型。

您在 Chrome 和 Firefox 中看到的是 type="date" 输入的默认浏览器版本。

Safari 不支持 type="date" 的输入。

https://developer.mozilla.org/en-US/docs/Web/html/Element/input/date#Browser_compatibility

我尝试了 Semantic UI React 和普通的并排

  <Container>
    <Form>
      <Form.Input
      label='From'
      type='date' 
      min=data_inizio
      value=moment(data_fine).format('YYYY-MM-DD')
      onChange=
          (e) => this.setState(
            filters: 
                ...filters,
                data_fine: moment(e.target.value).format('YYYY-MM-DD')
            
      , this.filter)
     />
    </Form>
    <span><strong>Plain version</strong></span><br/>
    <input type="date" />
  </Container>

完整示例:https://codepen.io/anon/pen/GBdoQW

第一个选择器与下面的普通选择器相同。第一个只获得一些语义 CSS。

在 Safari 中尝试。它们只是常规的文本输入。 :(

【讨论】:

【参考方案2】:

你可以试试这个由 airbnb 制作的名为“react-dates”的酷日期选择器......

Github:airbnb / react-dates(用于文档)

官方现场演示:click here

代码沙盒演示(由我制作以帮助您入门):https://codesandbox.io/s/l5oo5r4pxl

【讨论】:

【参考方案3】:

最后我找到了一个新项目,它实现了一个通用的 DatePicker,风格为 semantic-ui-react。

Link to the GitHub repository

【讨论】:

【参考方案4】:

我发现 react-dates 没什么用,因为我使用的是 yarn 而不是 npm,而且他们只为 npm 用户添加了安装文档。

我推荐 react-day-picker,好的文档,相对容易设置。

https://react-day-picker.js.org/

safari 浏览器开发者没有添加默认的 html 日期选择器真是愚蠢,真是个浏览器的笑话......

【讨论】:

以上是关于在 Safari 上使用 React 的日期选择器的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 Mobile Safari DatePicker - 初始值

React-Strap 的日期选择器

如何在 React Native 中单独显示日期时间选择器?

反应日期选择器日期范围

如何在日期选择器输入上显示占位符?

Material UI 日期选择器 日期格式 React