reactjs 在Chakra-UI中对“数字”类型的输入设置“最大值”

ohtdti5x  于 2023-02-18  发布在  React
关注(0)|答案(1)|浏览(214)

在用几个输入构建一个用户界面时,我决定迁移基本输入组件,形成一个我可以使用的单一组件,虽然这不是真正的问题。下面是它的代码。为了方便和难忘的使用输入。

import {
  FormControl,
  FormErrorMessage,
  FormHelperText,
  FormLabel,
  Input,
} from "@chakra-ui/react";

const DefaultInput = ({
  isInvalid,
  label,
  helperText,
  errorMessage,
  ...otherProps
}) => {
  return (
    <FormControl isInvalid={isInvalid}>
      {label && <FormLabel>{label}</FormLabel>}
      <Input
        variant="outline"
        padding="25px 10px"
        margin="10px 0px"
        border={"0px"}
        {...(isInvalid && { border: "0px" })}
        {...otherProps}
      />
      {!isInvalid ? (
        <FormHelperText>{helperText}</FormHelperText>
      ) : (
        <FormErrorMessage>{errorMessage}</FormErrorMessage>
      )}
    </FormControl>
  );
};

export default DefaultInput;

像这样使用它,但它似乎没有注意到“最大”属性。

<DefaultInput
   value={custom.credits}
   isInvalid={creditsError}
   helperText={"Minimum of 50 Credits."}
   errorMessage={"Please enter a valid number above 50."}
   maxW={isNotSmallerScreen ? "50%" : "70%"}
   fontSize={!isNotSmallerScreen ? "12px" : "16px"}
   onChange={handleCustomCredit}
   type="number"
   placeholder="Enter Credits"
   name="credits"
   max="5000"
/>

我也尝试在我创建的组件中手动声明“max”和“type”,但仍然一无所获。

.....
      <Input
        variant="outline"
        padding="25px 10px"
        margin="10px 0px"
        border={"0px"}
        max="5000"
        type="number"
        {...(isInvalid && { border: "0px" })}
        {...otherProps}
      />
.....
rjee0c15

rjee0c151#

这实际上是浏览器的一个怪癖,与脉轮无关。max HTML5属性实际上不会限制您输入更大的数字,直到您提交包含的表单。如果您想限制它,您必须构建自己的函数。
除非你在提交时也没有看到任何东西,请看这个例子,你应该看到https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_max_min

相关问题