Javascript 如何在React的输入中使用类似enter的逗号字符

Javascript 如何在React的输入中使用类似enter的逗号字符,javascript,reactjs,Javascript,Reactjs,我正在尝试进行标记输入,当用户键入“,”字符时,我不想在输入中添加条目 我使用onKeyDown上的函数 inputKeydown = e => { const val = e.target.value; var patt = /^[0-9]*$/; if (e.key === "Enter" || e.which === 188 && val) { let a = this.state.zips.includes(val);

我正在尝试进行标记输入,当用户键入“,”字符时,我不想在输入中添加条目

我使用onKeyDown上的函数

inputKeydown = e => {
    const val = e.target.value;
    var patt = /^[0-9]*$/;
    if (e.key === "Enter" ||  e.which === 188 && val) {
      let a = this.state.zips.includes(val);
      if (
        this.state.tags.find(
          tag => tag.value.toLowerCase() === val.toLowerCase()
        )
      ) {
        return;
      }
      if (val.length != 5) {
        return;
      }
      this.setState({ tags: [...this.state.tags, { match: a, value: val }] });
      this.tagInput.value = null;
    } else if (e.key === "Backspace" && !val) {
      this.removeTag(this.state.tags.length - 1);
    }
  };
这里是如果用户按enter键进入this.state.tags数组,如果用户键入“,”将执行相同的操作,我不想在这里执行

我用过这个

e.which === 188
一切都很好,但这也增加了输入字符。 我不想在输入中显示“,”字符我需要做什么?

只需在您的条件下使用,这样就不会触发默认事件(插入逗号)

document.getElementById('textinput')。addEventListener('keydown',e=>{
如果(e.which==188){
警报('逗号')
e、 预防默认值()
}
})
使用
preventDefault()
方法。从:

此方法告诉用户代理,如果事件没有得到显式处理,其默认操作不应像通常那样执行。

因此:

inputKeydown=e=>{
const val=e.target.value;
var patt=/^[0-9]*$/;
如果(e.key==“输入”|| e.which===188&&val){
e、 preventDefault();//-->这将防止放置逗号。
设a=this.state.zips.includes(val);
如果(
this.state.tags.find(
tag=>tag.value.toLowerCase()==val.toLowerCase()
)
) {
返回;
}
如果(值长度!=5){
返回;
}
this.setState({tags:[…this.state.tags,{match:a,value:val}]});
this.tagInput.value=null;
}else if(e.key==“Backspace”&&&!val){
this.removeTag(this.state.tags.length-1);
}
};

您还可以使用
return false
,它对一些额外的内容执行相同的操作。有关更多详细信息,请参阅。

只需使用
。替换
并删除
确切位置?是否尝试将
e.preventDefault()
放在函数的开头?