javascript - 如何将选择值从日历传递到输入

标签 javascript reactjs momentjs

我正在使用来自 Antd 库的 DatePicker 组件,该组件在后台运行 MomentJS 以实现日期/时间功能,作为更大的调度组件的一部分。

我在组件中创建了第二个输入元素,并将其设置为禁用。这样输入是只读的。我尝试将从日历中选择的任何日期的值传递到以下格式的输入字段:7/09/2019

有没有办法在组件级别做到这一点?

Edit goofy-currying-csgtr

我的组件

import React from "react";
import ReactDOM from "react-dom";
import "antd/dist/antd.css";
import "./index.css";
import { DatePicker, Row, Col } from "antd";

function onChange(value, dateString) {
  console.log("Selected Time: ", value);
  console.log("Formatted Selected Time: ", dateString);
}

function onOk(value) {
  console.log("onOk: ", value);
}

ReactDOM.render(
  <div>
    <Row>
      <Col span={8}>
        <DatePicker
          open
          className="my-class"
          onChange={onChange}
          onOk={onOk}
          format="MMMM"
        />
      </Col>
      <Col span={2} offset={6}>
        <input value="7/09/2019" disabled />
      </Col>
    </Row>
  </div>,
  document.getElementById("container")
);

最佳答案

为此,您应该使用状态跟踪该值。

您可以使用定义类组件的传统方法并使用setState,也可以使用钩子(Hook)。

对于构造日期字符串,有原生的 JS 方法可以帮助您解决这个问题! Date.toLocaleDateString

我建议查看此处的“日期”文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

import React, { useState } from "react";
import ReactDOM from "react-dom";
import "antd/dist/antd.css";
import "./index.css";
import { DatePicker, Row, Col } from "antd";

const DatePickerExample = () => {
  const [date, setDate] = useState(new Date().toLocaleDateString("en-US"));

  return (
    <div>
      <Row>
        <Col span={8}>
          <DatePicker
            open
            className="my-class"
            onChange={value =>
              setDate(new Date(value).toLocaleDateString("en-US"))
            }
            onOk={value => setDate(new Date(value).toLocaleDateString("en-US"))}
            format="MMMM"
          />
        </Col>
        <Col span={2} offset={6}>
          <input value={date} disabled />
        </Col>
      </Row>
    </div>
  );
};

ReactDOM.render(<DatePickerExample />, document.getElementById("container"));

这是所提供示例的 CodeSandbox 链接! https://codesandbox.io/s/ancient-paper-hswmo

关于javascript - 如何将选择值从日历传递到输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56958328/

相关文章:

javascript - ID相同时如何获取data-*内容?

javascript - Reactjs 中的错误 : Highcharts error #13: www. highcharts.com/errors/13/

javascript - 这个脚本标签语法是什么意思?

javascript - 这个作用域可以在 JavaScript 中实现吗?

html - 无法在导航栏 html 中显示 Logo

reactjs - 在安装Material UI时,系统提示我一系列错误?

javascript - 为什么使用 immutableJS 我的状态没有改变?

date - moment.js 第二天返回

javascript - 弃用警告 : moment construction falls back to js Date when I use moment. js 获取当前日期

javascript - 检查选择框是否相同但跳过选择框中的第一项