javascript - Reactjs material ui textfield number max 和 min

标签 javascript reactjs numbers material-ui textfield

Registrazione schermo 2020-11-20 alle 17 21 03

我有一个输入字段,它应该只取最小值和最大值之间的值。

我的操作如下所示,但如图所示手动输入数字会绕过控件。

我该怎么办?

链接:codesandbox

<TextField
          id="outlined-number"
          label="Number max number 10"
          type="number"
          InputProps={{ inputProps: { min: "0", max: "10", step: "1" } }}
          variant="outlined"
          handleChange('number')
        />

我的 handleChange:

const handleChange = field => ({ target: { value } }) => {
        setState(prev => {
            const _item = prev.item;
            _item[field] = value;
            return { ...prev, item: _item };
        });
    };

handleChange('nameAttr')

最佳答案

您可以将 TextField 用作受控组件以防止输入超过 10 个。您还应该为此使用一个额外的状态变量。

代码如下(将组件替换为下面给出的组件,并额外导入useEffect)

export default function FormPropsTextFields() {
  const classes = useStyles();
  
  const [value, setValue] = useState();

  function handler(e) {
    if (Number(e.target.value) > 10) {
      setValue(10);
    }else{
      setValue(e.target.value);
    }
  }

  return (
    <form className={classes.root} noValidate autoComplete="off">
      <div>
        <TextField
          id="outlined-number"
          label="Number max number 10"
          type="number"
          InputProps={{ inputProps: { min: "0", max: "10", step: "1" } }}
          variant="outlined"
          onChange={handler}
          value={value}
        />
      </div>
    </form>
  );
}

因此,如果输入值大于 10,由于我们在 handler 函数中的逻辑,它会阻止更新状态变量 value。这不是最佳解决方案,您可能希望基于此示例构建您的逻辑。

关于javascript - Reactjs material ui textfield number max 和 min,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64933296/

相关文章:

javascript - 我可以在一个托管服务中托管我的前端,而在其他地方托管后端吗?

javascript - className条件不是动态的?

javascript - CASL React 库授权安全吗?

javascript - 如何在不使用 try/catch(err) 的情况下处理 indexOf 返回 'null' ?

numbers - 用连续的数字组成一个数字

java - 如何生成一个介于 -1 和 1 之间的随机数?

javascript - 如何让匹配器使用日期范围的聚合?

javascript - Django - 使用 Javascript 将 ID 传递到 url 模板标记中

javascript - 获取一个div之后的所有div并将其属性减一

javascript - 自定义信用卡号长度