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