Javascript函数未按预期工作

Javascript函数未按预期工作,javascript,Javascript,目前我正在尝试创建一个只允许a-Za-z、0-9、空格和逗号的脚本。这是我的剧本: <textarea name="commentText" onkeypress="return filterCharAll(event,this);"></textarea> function filterCharAll(e,t){ if(window.event){ var charCode=window.event.keyCode; } 若否(e){ var charCode=

目前我正在尝试创建一个只允许a-Za-z、0-9、空格和逗号的脚本。这是我的剧本:

<textarea name="commentText" onkeypress="return filterCharAll(event,this);"></textarea>

function filterCharAll(e,t){
if(window.event){
var charCode=window.event.keyCode;
}
若否(e){
var charCode=e.which;
}
else{return true;}
如果((charCode>47&&charCode<58)| |(charCode>64&&charCode<91)| |(charCode>96&&charCode<123)| |(charCode==188 | | charCode==32 | | charCode==13)){
返回true;
}否则{
返回false;
}   
}
一切都很好!但逗号不起作用。当我按下它时,什么也没发生

JSfiddle:


你能帮我吗?谢谢。

您需要检查
44
charCode
以匹配逗号:

function filterCharAll(e,t){
if(window.event){
var charCode=window.event.keyCode;
}若否(e){
var charCode=e.which;
}否则{
返回true;
}
如果(charCode==44 | | |(charCode>47&&charCode<58)| |(charCode>64&&charCode<91)| |(charCode>96&&charCode<123)| |(charCode==188 | | charCode==32 | | | charCode==13)){
返回true;
}否则{
返回false;
}
}

您不应该使用
charCode
,因为它是,您可以使用
char
并根据正则表达式进行测试

function filterAll(event) {
  return /[A-Za-z0-9, ]/.test(event.char);
}

当我在这个网站测试时,显示188为逗号。无论如何,42也不起作用……关于
if(window.event)
,调用中传递了相关的事件对象,您不需要再次查找它。已弃用且来自过时的标准,您不应该使用它,“请注意,此功能可能随时停止工作”。您不应该使用
.key
,因为它将返回特殊键的名称,例如“Alt”,它将匹配不带
^$
锚定的正则表达式。您知道如何避免CTRL+V吗?是否可以使用CTRL+V在内部插入某些字符textarea@inukix您可以在
粘贴
事件上
返回false
,但它会阻止粘贴到我页面上的每个框?我只需要在这个特定的文本区域内。@inukix可以在答案中看到代码-就像您可以
onkeypress=“return filterCharAll(event);”
仅对该元素,您同样可以
onpaste=“return false;”
仅对该元素(仅当处理程序附加到某个外部元素时,才会在外部元素上禁用粘贴)
function filterAll(event) {
  return /[A-Za-z0-9, ]/.test(event.char);
}