Javascript 。包括不查找期间

Javascript 。包括不查找期间,javascript,forms,function,Javascript,Forms,Function,我有一个JavaScript函数,可以防止用户键入除数字和句点以外的任何字符。我还试图阻止用户键入多个句点。根据我对该脚本工作方式的观察,如果用户先键入句点,然后键入数字(“.1”),则在删除第一个句点之前或之后,他们将无法再键入句点。然而,由于某些原因,用户可以键入两个或多个连续的句点(“…”),而无需函数阻止它。有趣的是,这会导致函数找不到任何小数,从而允许用户根据自己的意愿键入任意数量的小数。以下是我正在使用的代码: 函数isNumberKey(evt){ 如果(evt.keyCode=

我有一个JavaScript函数,可以防止用户键入除数字和句点以外的任何字符。我还试图阻止用户键入多个句点。根据我对该脚本工作方式的观察,如果用户先键入句点,然后键入数字(“.1”),则在删除第一个句点之前或之后,他们将无法再键入句点。然而,由于某些原因,用户可以键入两个或多个连续的句点(“…”),而无需函数阻止它。有趣的是,这会导致函数找不到任何小数,从而允许用户根据自己的意愿键入任意数量的小数。以下是我正在使用的代码:

函数isNumberKey(evt){
如果(evt.keyCode==0){
var charCode=evt.charCode;
如果(charCode>31&(charCode!=46&&(charCode<48|charCode>57))){
返回false;
}否则{
if(charCode==46){
if(document.getElementById('inputBox').value.includes(“.”==true){
返回false;
}否则{
返回true;
}
}否则{
返回true;
}
}
}
}

这是因为您将此
输入声明为
编号,因此将从其值中删除“.”。只需将输入类型更改为
text

函数isNumberKey(evt){
如果(evt.keyCode==0){
var charCode=evt.charCode;
如果(charCode>31&(charCode!=46&&(charCode<48|charCode>57))){
返回false;
}否则{
if(charCode==46){
if(document.getElementById('inputBox').value.includes(“.”==true){
返回false;
}否则{
返回true;
}
}否则{
返回true;
}
}
}
}

您的整个
isNumberKey
函数包含在检查事件的
keyCode
是否为零的
if
语句中。键入句点时,
keyCode
46
。所以你的逻辑永远不会被执行

作为一方,不推荐使用
KeyboardEvent.keyCode
;你不应该用它。MDN建议改用
KeyboardEvent.key


正如guijob所说,您还应该将输入的
类型
更改为
文本

if语句是函数的内容。它本身不在if语句中。if语句就是逻辑。我用
console.log()
测试了
keyCode
输出,选择使用它是因为它可以工作。当我将
KeyboardEvent
的输出写入控制台时,
charCode
的值为
46
,但
keyCode
的值为
0
一段时间。对于任何字母,它都是
0
,但对于其他键,如
Tab
Home
、或
End
,则不适用。我添加了该检查,以防止与其他键相关的其他错误。