Javascript 有没有办法检查输入值是否包含特定的键码?

Javascript 有没有办法检查输入值是否包含特定的键码?,javascript,arrays,keycode,Javascript,Arrays,Keycode,我有一个键码数组,我需要检查textarea中的任何字符是否不包括在该数组中。虽然很容易检查数组中是否按了键,但不幸的是,如果将文本粘贴到textarea中,它将不起作用 因此,如果数组中不存在文本区域中存在带有键码的字符,则我对文本区域的字符限制将发生变化。例如,如果š(83)的键码不在数组中,它将基于此更改字符限制  dec_codes=[10, 12, 13, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,...] 我不知道还能提供什么代码 是的,

我有一个键码数组,我需要检查textarea中的任何字符是否不包括在该数组中。虽然很容易检查数组中是否按了键,但不幸的是,如果将文本粘贴到textarea中,它将不起作用

因此,如果数组中不存在文本区域中存在带有键码的字符,则我对文本区域的字符限制将发生变化。例如,如果š(83)的键码不在数组中,它将基于此更改字符限制

 dec_codes=[10, 12, 13, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,...]
我不知道还能提供什么代码


是的,我知道检查数组是否是字符而不是键码会更好,但数组是为我提供的,我只是想知道我是否可以在不转换数组的情况下实现所需的功能。

这就是如何检查给定数组中的任何字符是否在字符串中的方法

constcharcodes=[10,12,13,32,33,34,35,36,37,38,39,40,41,42].reduce((acc,x)=>Object.assign({},acc,{[String.fromCharCode(x)]:true}),{});
常量hasChars=(源代码,字符代码)=>{
设len=source.length;
而(len--){
if(字符码中的源字符(len)){
返回true;
}
}
返回false;
}
log(hasChars(“hello”,charCodes))
console.log(hasChars(“\nhello”,charCodes))

log(hasChars(“hel)o”,charCodes))
您需要结合使用粘贴和按键事件。粘贴以处理内容的ctrl+v(粘贴)

测试类型
*
或复制粘贴
****
或复制pate
*h*e*l*l*o***wo**rl**d**
,其中
*
的键码为42,
(空格)的键码为32

const ta=document.getElementById(“ta”);
const dec_代码=[10,12,13,32,33,34,35,36,37,38,39,40,41,42]
ta.addEventListener(“按键”,功能(e){
e、 预防默认值();
this.value+=过滤器输入(e.key);
});
ta.addEventListener(“粘贴”,函数(e){
e、 预防默认值();
this.value+=filterInput(例如,clipboardData.getData('text/plain'))
});
常量过滤器输入=数据=>{
返回数据。拆分(“”)。过滤器(字符=>{
返回dec_code.findIndex(code=>char.charCodeAt()==code)=-1
}).加入(“”);
}

您好,您可以在textarea中收听任何输入,并将其文本的拆分版本与您的字符代码进行比较,charCodeAt和一些方法在这里非常有用,例如

function checker(charCodes, text) {
    return text.split().some(char => charCodes.indexOf(char.charCodeAt(0)) > -1);
}


textareaNode.addEventListener('input', event => {
    if(checker([101,105], event.target.value)){
        // char code exists
    } 
})

发布你的代码。您可以使用onchange事件,它将在粘贴内容时工作。