我正在将Material-UI与React和TypeScript一起使用。
<TextField
id='user-id'
label='user id'
type='number'
required
helperText='Required'
inputProps={{ maxLength : 12 }}
onChange={(e) => setUserid(Number(e.target.value))}
variant='filled' />
如果我将type
属性与inputProps
一起使用,则它不会限制最大长度。我没有看到任何错误消息。我看不到哪里做错了。
答案 0 :(得分:2)
我认为它不适用于数字,但适用于字符串。 如果与您的相似,请参见此问题:https://github.com/mui-org/material-ui/issues/5309
答案 1 :(得分:1)
您可以使用此:
const inputP = {maxLength: 30}
<TextField
id='user-id'
label='user id'
type='number'
required
helperText='Required'
inputProps={inputP}
onChange={(e) => setUserid(Number(e.target.value))}
variant='filled' />
答案 2 :(得分:0)
由于maxlength
不是<input type="number" />
的有效属性,因此应改用max
。
<TextField
...
type="number"
inputProps={{
max: <YOUR MAXLENGTH HERE>,
}}
/>
答案 3 :(得分:0)
根据MDN,您应该使用max
(用于numeric types
)而不是maxLength
(用于password, search, tel, text, url
):
<TextField
id='user-id'
label='user id'
type='number'
required
helperText='Required'
inputProps={{ max: 12 }}
onChange={(e) => setUserid(Number(e.target.value))}
variant='filled' />
答案 4 :(得分:0)
这是我用于Marerial UI的简单方法:
对于 Typescript ,您需要明确告知TypeScript类型HTMLElement
,这是您的目标。
<TextField
id='user-id'
label='user id'
type='number'
required
helperText='Required'
onInput={(e) => {(e.target as HTMLInputElement).value = Math.max(0, parseInt((e.target as HTMLInputElement).value)).toString().slice(0, 12)}}
variant='filled' />
这将使TypeScript知道该元素是number
,并将知道value属性。
您在这里不需要onChange
或inputProps
。