javascript - ReactJs输入: onKeyPressed does not fire for backspace

标签 javascript reactjs input input-mask

我正在尝试在 React 中创建一个掩码,但是 onKeyPressed 它不会因退格键或删除而触发。它不允许删除输入。

这是我的代码:

export default class InputField extends React.Component {
    constructor(props) {
        super(props);
        this.state = { text: this.props.text };
        this.onKeyPress = this.onKeyPress.bind(this);
    }

    onKeyPress(event) {
        console.log(event.key);
        var mask = this.props.mask;
        var currentText = this.state.text || "";
        var invalidButtonPress = false;
        switch (mask) {
          case "number":
            if ("0123456789".indexOf(event.key) > -1) {
              this.setState({ text: currentText + event.key });
            } else {
              invalidButtonPress = true;
            }
            break;
          default:
            break;
        }
        if (invalidButtonPress) {
          // allow for arrow keys, tab and backspace.. but if none of those and invalid reset
          this.setState({ text: currentText }); // Reset back to original text
        }
    }

    render() {
        <Input
            type={this.props.type || "text"}
            value={this.state.text}
            mask={this.props.mask}
            onKeyPress={this.onKeyPress}
        >
        ...
    }
}

我尝试过 onKeyDownOnKeyUp,它们确实检测退格键,但这些事件我无法通过 this.setState( {})

最佳答案

I have tried onKeyDown and OnKeyUp, which do detect backspace, but these events I am unable to effect the value on the input by this.setState({})

React 允许您混合和匹配这些事件。因此,您可以保留 onKeyPress 用于添加到输入中,并使用 onKeyDownonKeyUp 进行删除。

关于javascript - ReactJs输入: onKeyPressed does not fire for backspace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48858776/

相关文章:

reactjs - 尝试导入错误: 'useRouteMatch' is not exported from 'react-router-dom'

javascript - 通过 props 传递字符串并使用 const 值时的不同输出

html - 如何处理两种类型的输入框?

javascript - 如何在 jQuery 上重复或循环这个队列?

javascript - 显示加载页面无法正常工作

javascript - 如何使用reactjs验证对象数组

jquery - 如何根据值包含隐藏元素?

jquery - 检查 jquery(js) 中的字段是否为空?

javascript - 如何从 Crocks javascript 库中的 Monads 中提取值

javascript - 控制第三方 javascript 的重新加载