在React中使用regex限制粘贴的输入值

时间:2017-05-11 18:16:12

标签: javascript reactjs

我有输入字段来放置电话号码,我想限制每个特殊字符,如

  

+, - 。

来自我的输入字段和onPaste事件。 我的代码不起作用,我仍然可以将这些特殊字符粘贴到我的输入字段

onPaste(e) {
  let str = e.target.value;
  let newstr = str.replace(/[+-.]/g, '');
  if (str !== newstr) {
  e.preventDefault();
 }}

我的输入代码

<InputText
  name="officePhone"
  placeholder="Office Phone"
  label="Office Phone"
  type="number"
  onChange={e => this.onChange(e, 'form')}
  value={this.state.form.officePhone}
  onPaste={e => this.onPaste(e)}
/>

1 个答案:

答案 0 :(得分:3)

您的onPaste函数正在查看e.target.value,它需要获取的是使用e.clipboardData.getData('Text')从剪贴板中粘贴的数据。

onPaste(e) {
  const str = e.clipboardData.getData('Text');
  const newStr = str.replace(/[+-.]/g, '');
  if (str !== newStr) {
    e.preventDefault()
  }
}