允许在textfield中输入数字并不适用于第一个字符

时间:2017-06-19 19:08:04

标签: javascript reactjs

我有一个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,则会将所有内容记录为输入。 enter image description here

我不确定我是否错误地编写了我的帮助函数,或者我是否错误地附加了事件处理程序。感谢您的帮助!

0 个答案:

没有答案