Я пытаюсь создать поле ввода, где оно принимает время в качестве ввода. Вот мой код
<InputMask
mask="99:99"
onBlur={handleOnBlur}
onChange={(e) => {
const text = e.target.value
setInputValue(text)
setValueValid(true)
const fixedText = text.replace(/:/g, '')
if (onChange) {
onChange({
...e,
target: {
...e.target,
value: fixedText,
},
})
}
}}
//value={inputValue}
{...rest}
>
{(inputProps) => (
<Tooltip
open={!valueValid}
placement="bottom-start"
title="Ops Wrong Time Format!"
>
<StyledInput
{...inputProps}
autoFocus={rest.autoFocus}
className={rest.className}
onKeyDown={(e) => {
if (e.keyCode === 13) {
checkTimeFormat(inputValue)
if (valueValid) {
if (rest.onBlur) rest.onBlur(e)
e.target.blur()
if (onSubmit) {
const fixedText = inputValue.replace(/:/g, '')
onSubmit({
...e,
target: {
...e.target,
value: fixedText,
},
}, fixedText)
}
}
}
}}
/>
</Tooltip>
)}
</InputMask>
)
Я пытаюсь использовать InputMask , чтобы установить правильный формат и убедитесь, что в качестве входных данных используются только цифры. Я хотел бы отобразить всплывающую подсказку , если время не является приемлемым (например, / 75:89, 99:78 ... et c). Таким образом, все работает, и я могу см. подсказку, если я ввожу что-то недопустимое, однако я не могу избавиться от странного поведения, когда курсор всегда заканчивается в конце поля ввода после какого-либо изменения ... Я искал в Интернете для ответ, но, похоже, ничего не помогло. Обратите внимание, что если я удаляю компонент всплывающей подсказки, обертывающий мой пользовательский ввод (StyledInput), тогда все возвращается на круги своя (курсор останавливается там, где пользователь в данный момент изменяет).
Сначала я подумал, что это проблема рендеринга, поэтому я попытался закомментировать зацепки
setInputValue(text)
setValueValid(true)
и даже попытался убрать переключатель для всплывающей подсказки open = {! ValueValid}
но похоже, что всплывающая подсказка является причиной проблемы ... у кого-нибудь есть идеи, как решить эту проблему? Любые рекомендации или ссылки на do c будут очень полезны!
Вот код песочницы: https://codesandbox.io/s/wandering-frost-0dy78