gpt4 book ai didi

javascript - 如何从键盘编辑时间选择器的值?

转载 作者:行者123 更新时间:2023-11-30 19:37:04 25 4
gpt4 key购买 nike

我有一个material-ui-time-picker,我想控制这个输入,它运行良好,但我想从键盘编辑时间输入,而不是当我点击输入时在时钟上。

我的代码是:

import React, { Component } from "react";
import { TimePicker } from "material-ui-time-picker";
import { Input as Time, Dialog as Clock } from "@material-ui/core";

openDialog = () => this.setState({ isOpen: true });
closeDialog = () => this.setState({ isOpen: false });
handleDialogTimeChange = newValue => {
const hours = newValue
.getHours()
.toString()
.padStart(2, "0");
const minutes = newValue
.getMinutes()
.toString()
.padStart(2, "0");
const textValue = hours + ":" + minutes;
this.setState({ time: textValue });
};
handleKeyboardTimeChange = time => this.setState({ time });
createDateFromTextValue = value => {
const splitParts = value.split(":");
return new Date(1970, 1, 1, splitParts[0], splitParts[1]);
};
render() {

return (

<div>
<Time
value={this.state.time}
onChange={this.handleKeyboardTimeChange}
endAdornment={
<InputAdornment position="end">
<IconButton onClick={this.openDialog}>
<AccessTime />
</IconButton>
</InputAdornment>
}
//}
/>
<Clock maxWidth="xs" open={this.state.isOpen}>
<TimePicker
mode="24h"
value={this.createDateFromTextValue(this.state.time)}
onChange={this.handleDialogTimeChange}
autoOk={true}
cancelLabel=""
okLabel=""
placeholder=""
disableUnderline={true}
/>
</Clock>
</div>
);
}

我的沙箱:https://codesandbox.io/s/vm9wm19p27

当我运行它时,我得到了这个输入,但是当我编辑他的值时,这个输入会消失。

我该如何解决?

最佳答案

我已经 fork 了您的沙箱并进行了一些调整。虽然我还没有修复它 - 我只会告诉你当前出了什么问题。

https://codesandbox.io/s/j24rqql9n9

我修改了两行
在你的构造函数中,我添加了

this.handleKeyboardTimeChange = this.handleKeyboardTimeChange.bind(this)

还有你的handleKeyboardTimeChange:

handleKeyboardTimeChange(event) {
this.setState({ time: event.target.value });
}

这只是将状态设置为从您在此处看到的内容传入的准确值。无需额外验证。

关于javascript - 如何从键盘编辑时间选择器的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55830661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com