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>
通常、プロパティ名と属性名は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"
/>
);
}
}
maxLengthが機能するためには、タイプは 'text'でなければなりません(ほとんどの人はおそらく数値を入力しています)
inputProps = {{maxLength:6}}
variant="outlined"
MaxLength値をnumberとして渡す必要があります。
<input
onChange={this.handleChangeInput}
value={this.state.form.message}
type="text"
className="phone validate"
name="phone"
maxLength={11}
/>