繁体   English   中英

onClick 事件在单击 Microsoft React 结构的 DatePicker 图标时不起作用

[英]onClick event not working on click of DatePicker icon of Microsoft React fabric

我试图显示 DatePicker 的错误消息 onClick 事件。 但是当我们点击 datepicker 输入框时它正在工作。 但是当我们点击日期选择器图标时,onClick 事件不起作用。 任何人都可以建议任何事件以在单击图标时显示警告消息。

我正在使用以下组件:

import { DatePicker } from 'office-ui-fabric-react';

<div className="date-range">
                <DatePicker
                    label={text.label}
                    placeholder={text.placeholder}
                    id={text.id}
                    showMonthPickerAsOverlay
                    strings={DayPickerStrings}
                    onSelectDate={date => onDateRangeChange(date, text.id)}
                    onClick={event => onDateChangeClick(event)}
                    isMonthPickerVisible={false}
                    formatDate={date => onFormatDate(date, pattern)}
                    minDate={minDate}
                    maxDate={maxDate}
                    value={value[text.id]}
                />
                {showEndDateWarning ? (
                    <p className="warningClass">{text.warningMsg}</p>
                ) : null}
            </div>

您可以在“onSelectDate”事件中将“showEndDateWarning”的 state 值更改为 true。

我刚刚遇到了同样的问题并通过使用 onClickCapture= 解决了它

import * as React from 'react';
import {
    DatePicker,
    IDatePickerStrings,
    defaultDatePickerStrings,
    IDatePickerStyles
} from '@fluentui/react';
import { useConst } from '@fluentui/react-hooks';
import { AcknowledgementReIssueResponse } from '../models/dtos';

// START COMPONENT
const datePickerStyles: Partial<IDatePickerStyles> = { root: { maxWidth: 200, marginTop: -10 } };
export const ReIssueOnPicker = (props: { acknowledgementReIssueResponse: AcknowledgementReIssueResponse, disabled: boolean, onPress: (controlName : string ) => void }) => {
    console.log('ReIssueOnPicker');
    console.log(props);

    const minDate = new Date(props.acknowledgementReIssueResponse.dueFrom);
    const zeroPad = (num, places) => String(num).padStart(places, '0')

    const onSelectDate = React.useCallback(
        (date: Date): void => {
            // toISODate applied browser local time offset ?
            props.acknowledgementReIssueResponse.reIssueOn = `${date.getFullYear()}-${zeroPad(date.getMonth() + 1, 2)}-${zeroPad(date.getDate(), 2)}T00:00:00.0000000`;
        }, null
    );

    const strings: IDatePickerStrings = useConst(() => ({
        ...defaultDatePickerStrings,
    }));

    return (
        <div>
            <DatePicker
                styles={datePickerStyles}
                // DatePicker uses English strings by default. For localized apps, you must override this prop.
                onSelectDate={onSelectDate}
                onAfterMenuDismiss={() => props.onPress('')}
                **onClickCapture**={event => props.onPress('ReIssueOnPicker')}
                disabled={props.disabled}                 
                strings={strings}
                placeholder="Select a date..."
                ariaLabel="Select the date to re-issue on"
                minDate={minDate}
                allowTextInput
                value={minDate}
                />
        </div>
    );
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM