Yan*_*teh 10 css web-frontend reactjs material-ui
我有一个日期选择器,当用户单击字段中的任意位置而不仅仅是日历图标时,我想显示该日期选择器。
这是选择器
export function DatePickerField(props) {
......
return (
<Grid container>
<MuiPickersUtilsProvider utils={DateFnsUtils}>
<KeyboardDatePicker
{...field}
{...props}
disableToolbar
inputVariant="outlined"
value={selectedDate}
onChange={_onChange}
error={isError}
autoOk
invalidDateMessage={isError && error}
helperText={isError && error}
/>
</MuiPickersUtilsProvider>
</Grid>
);
}
Run Code Online (Sandbox Code Playgroud)
我需要这样做,因为如果手动输入日期,它不会抛出任何错误,但我会获取invalid date表单数据。
单击字段时如何显示选择器?
Nea*_*arl 17
MUI v5DatePicker在包中添加了该组件@mui/lab。如果您希望在用户单击 内部后打开选择器TextField,请使用MobileDatePicker,但它没有日历图标,如果您想要一个,请参阅此答案。
<MobileDatePicker
{...}
renderInput={(params) => <TextField {...params} />}
/>
Run Code Online (Sandbox Code Playgroud)
但是DesktopDatePicker确实有日历图标,但您必须编写额外的代码来控制open状态并告诉选择器在TextField单击时打开:
<DatePicker
open={open}
onOpen={() => setOpen(true)}
onClose={() => setOpen(false)}
renderInput={(params) => {
return (
<TextField
{...params}
onClick={(e) => setOpen(true)}
/>
);
}}
/>
Run Code Online (Sandbox Code Playgroud)
您可以控制KeyboardDatePicker的open状态并将其设置为单击true时:TextField
<MobileDatePicker
{...}
renderInput={(params) => <TextField {...params} />}
/>
Run Code Online (Sandbox Code Playgroud)
对于使用 slotProps 的 MUI-X Datepicker v6,它看起来像这样:
const [open,setOpen] = useState(false);
<DatePicker
open={open}
onClose={() => setOpen(false)}
slotProps={{
textField: {
onClick: () => setOpen(true),
},
}}
/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26169 次 |
| 最近记录: |