Material-UI:限制 TextField 中的特定特殊字符

Rym*_*mrk 4 reactjs material-ui

如何[^%<>\\$'"]在 Material-UI 上进行验证或不允许输入以下特殊字符TextField

以下是我现有的代码。

const useStyles = makeStyles((theme) => ({
textField: {
    marginRight: theme.spacing(1),
    width: 500,
},
FormLabelHeader:{
    fontSize: '20px',
    width: 500,
},
})
enter code here
const txtNameChange = (e) =>
{
    setpersonDetails(prevState =>({
        ...prevState,
        'NAME' : e.target.value
    }))
}

.....
<FormControl>
   <FormLabel className = {style.FormLabelHeader}>Add</FormLabel><br/>
   <TextField className = {style.textField} label='NAME' name = 'NAME' variant='outlined' autoComplete='off' onChange={txtNameChange}/><br />
</FormControl>
Run Code Online (Sandbox Code Playgroud)

Nea*_*arl 5

我怎样才能进行验证

helperText您可以通过设置 的和error属性来验证值后提供错误消息TextField

const [name, setName] = useState("");
const [error, setError] = useState("");
const onChange = (e) => {
  const newValue = e.target.value;

  if (!newValue.match(/[%<>\\$'"]/)) {
    setError("");
  } else {
    setError("Forbidden character: %<>$'\"");
  }
  setName(newValue);
};

return (
  <TextField
    value={name}
    onChange={onChange}
    helperText={error} // error message
    error={!!error} // set to true to change the border/helperText color to red
  />
);
Run Code Online (Sandbox Code Playgroud)

或不允许进入

由于您已经在代码中控制了 的值TextField,因此如果验证失败,请不要更新状态:

const onChange = (e) => {
  const newValue = e.target.value;

  if (!newValue.match(/[%<>\\$'"]/)) {
    setError("");
    setName(newValue); // only set when successful
  } else {
    setError("Forbidden character: %<>$'\"");
  }
};
Run Code Online (Sandbox Code Playgroud)

编辑 66848152/material-ui-restrict-specific-special-characters-in-textfield