javascript - 如何使用逗号字符,如在 React 中输入输入
问题描述
我正在尝试进行标签输入,当用户输入“,”字符时,我不想在输入中添加条目
我像 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);
}
};
这是如果用户按下输入条目转到this.state.tags数组,如果用户键入“,”我不想这样做,将是相同的操作。
我用于那个
e.which === 188
一切正常,但这也添加到输入“,”字符。我不想在输入中显示“,”字符我需要做什么?
解决方案
只需在您的条件中使用e.preventDefault() 即可不触发默认事件(插入逗号)
document.getElementById('textinput').addEventListener('keydown', e => {
if(e.which === 188){
alert('comma')
e.preventDefault()
}
})
<input type="text" id="textinput" />
推荐阅读
- javascript - 如何在 Ruby on rails 项目中的 Javascript 中创建任务
- javascript - 无法使用“文件名:”更改“protractor-jasmine2-html-reporter”中的文件名
- django - 如何在 jenkins 控制台日志上显示 appspec 文件的日志?
- php - Jwt 身份验证问题 - 凭据无效
- asp.net-core - 升级到 ASP.NET Core 3.1,收到有关 System.Text.Json 的错误
- windows - POWERSHELL - WINDOWS REGISTRY - 如何使用带有“*”的路径,例如 'hkcr:\*\shell'
- java - Maven 因“缺少工件 jdk.tools:jdk.tools:jar:1.6”而失败
- mongodb - 将2个字符串组合成一个数组?
- python - 如何检查是否使用 Python 安装了 rpm 包?
- reactjs - 如何通过 useState 和 Typescript 使用动态属性