Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在文本区域中,按键之前和之后是什么?_Javascript_Html_Textarea - Fatal编程技术网

Javascript 在文本区域中,按键之前和之后是什么?

Javascript 在文本区域中,按键之前和之后是什么?,javascript,html,textarea,Javascript,Html,Textarea,我不想允许按功能键,如(F1,F2..等),表格键,也不要添加任何字符 对于下面的代码,这是不是从我的网站工作 document.getElementById(“代码”).addEventListener(“键控”,函数(e){ var oldOne=此值; var newOne=(this.value+String.fromCharCode(e.keyCode)).toLowerCase(); if(oldOne==newOne){ e、 预防默认值(); } document.getEle

我不想允许按功能键,如(F1,F2..等),表格键,也不要添加任何字符

对于下面的代码,这是不是从我的网站工作

document.getElementById(“代码”).addEventListener(“键控”,函数(e){
var oldOne=此值;

var newOne=(this.value+String.fromCharCode(e.keyCode)).toLowerCase(); if(oldOne==newOne){ e、 预防默认值(); } document.getElementById('message').innerHTML=“是否相同:”+(oldOne==newOne)+”,在“+oldOne+”之前,在“+newOne”之后; })

keydown
事件在写入角色之前为您提供对象的状态。 `keyup事件提供对象写入后的状态

您可能希望执行以下操作():


因为转换超出可用字符范围的字符会产生一个
,虽然它看起来像一个空字符串,但它占到了长度,不能像空格一样修剪,所以
“apple”+“ctrl”
的长度是
6
,而它显示为
“apple”
,所以最好使用

if (e.keyCode < 32 || e.keyCode > 126) {
  // This is not a valid char, do something to ignore
}
if(e.keyCode<32 | | e.keyCode>126){
//这不是有效的字符,请执行忽略操作
}
若要忽略这些特殊字符,而不是将其转换为字符串,请将其附加到当前值,然后与oldValue进行比较。

在编写时

String.fromCharCode(e.keyCode)
然后,即使按下,也会得到一个字符串,尽管没有看到值的任何变化,字符串。fromCharCode(e.keyCode)得到的是一些东西,键的字符串格式,它不是空字符串,因此在if中总是得到false


您可以签入keycode,也可以在keyup之后进行检查。

什么不起作用,您希望得到什么结果?当它起作用时,它表示不一样。例如,键入apple,然后按ctrl键。当它相同时,它会说“false”。this.value+String.fromCharCode(e.keyCode))。toLowerCase()也给出了我们键入的内容,那么为什么它不起作用呢?Np,我把你的代码段记录下来,然后找出这件事。我也学到了。
String.fromCharCode(e.keyCode)