我在使用Material-UI的TextField组件时偶然发现了这个问题。当在TextField上传递多行属性时,组件被设置为<textarea>
,当同时传递多行和minlength属性时,minlength无法验证。我已经将这个问题缩小到<textarea>
元素,在通过“value”属性传递值时也会出现同样的问题,但这只发生在Chrome和Edge中,而不是Firefox。当value作为<textarea>
的子元素传入时,minlength属性也会进行验证。
下面是一个验证失败的示例:
<form onSubmit={handleSubmit}>
<textarea minLength={5} value={textareaValue} onChange={handleTextareaChange} />
<button type="submit">submit</button>
</form>
下面是一个测试的验证对象读数,我在其中提交了少于5个字符,这应该会失败验证:
{
badInput: false,
customError: false,
patternMismatch: false,
rangeOverflow: false,
rangeUnderflow: false,
stepMismatch: false,
tooLong: false,
tooShort: false,
typeMismatch: false,
valid: true,
valueMissing: false
}
在this MDN documentation中,它说“<textarea>
不支持value属性”,但在this React documentation中,它说“您可以通过传递值属性来控制文本区域”。
其他人有这个问题吗?谢谢你,谢谢!
1条答案
按热度按时间gzszwxb41#
当值作为
<textarea>
的子级传入时,它也适用于任何浏览器。minLength
属性似乎工作正常,但只有您的textarea
* 不受控制 *(没有value
或onChange
prop )。这是一个缺点,但也许在您的特定情况下,也许这是你正在寻找的。https://codesandbox.io/s/sharp-ardinghelli-rc5f63?file=/src/App.js