我有React的输入,但是maxlength
不起作用。有人知道如何解决这个问题吗?
这是handleChangeInput
handleChangeInput(input) {
this.setState({
...this.state,
form: {
...this.state.form,
[input.target.name]: input.target.value
}
})
}
这是我的输入:
<div className="input-field col s12 m6 l6">
<input onChange={this.handleChangeInput} value={this.state.form.message} type="text" className="phone validate" name="phone" maxlength="11"/>
<label for="telefone">Telefone</label>
</div>
答案 0 :(得分:12)
属性和属性名称在React中通常是camelCase
,maxLength
有用。
<input
onChange={this.handleChangeInput}
value={this.state.form.message}
type="text"
className="phone validate"
name="phone"
maxLength="11"
/>
但是,如果您给输入的value
长于maxLength
,您仍然可以覆盖此选项。解决此问题的唯一方法是检查回调中value
的长度,并截断它。
示例
class App extends React.Component {
state = { form: { message: "" } };
handleChangeInput = event => {
const { value, maxLength } = event.target;
const message = value.slice(0, maxLength);
this.setState({
form: {
message
}
});
};
render() {
return (
<input
onChange={this.handleChangeInput}
value={this.state.form.message}
type="text"
className="phone validate"
name="phone"
maxLength="11"
/>
);
}
}
答案 1 :(得分:1)
要使maxLength正常工作,类型必须为“文本”(大多数人可能会输入数字)
答案 2 :(得分:1)
只需在您的 handleOnChange 函数中这样做:
handlePasswordChange = (e) => {
if(e.target.value <= 11){
this.setState({
[e.target.name]: e.target.value
});
}
};
答案 3 :(得分:0)
您需要将maxLength值作为数字传递。
<input
onChange={this.handleChangeInput}
value={this.state.form.message}
type="text"
className="phone validate"
name="phone"
maxLength={11}
/>
答案 4 :(得分:0)
inputProps = {{maxLength:6}}
variant="outlined"
答案 5 :(得分:0)
对于任何使用reactstrap输入的人,就像它使用的其他属性(例如colSpan)一样,它既需要驼峰命名,也需要传递一个数字(例如maxLength = {250}),而不是字符串。我发现传递一个字符串可以用,但是React会抱怨它。
答案 6 :(得分:0)
<input
id="ZIPCode"
className="form-control"
type="text"
maxLength={10} // this is the important line
></input>