我有一个Material UI电话号码文本字段,只接受数字。
//in helper function
export function allowNumbersOnly(input) {
const formattedInput = input.replace(/[^\d]/g, '')
return formattedInput
}
//in component
constructor(props) {
super(props)
this.handleUpdateField = this.handleUpdateField.bind(this)
}
handleUpdateField(field, value) {
this.setState({
[field]: value
})
}
render() {
<TextField floatingLabelText="Phone" value={phone} maxLength="10"
onChange={(e) => this.handleUpdateField('phone', allowNumbersOnly(e.target.value))} />
}
在onChange
事件处理程序中,我传入的新值只应包含数字,因为任何其他不是数字的输入都会变为空字符串。它在我开始输入数字时起作用(即798fff
将停在798
,并且任何其他输入都不会显示非数字);但是,如果我使用f
开始输入并继续输入,即ff
,则会将所有内容记录为输入。
我不确定我是否错误地编写了我的帮助函数,或者我是否错误地附加了事件处理程序。感谢您的帮助!