Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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 isNumberKey()不工作_Javascript_Html_Keyevent - Fatal编程技术网

Javascript isNumberKey()不工作

Javascript isNumberKey()不工作,javascript,html,keyevent,Javascript,Html,Keyevent,很久以前,if在这个网站上发现了一些代码,阻止了用户在文本框中输入字母,并且成功了。自从找到这段代码后,我对它进行了修改和添加,但现在它不起作用了。这就是我的代码: var count = 1 function isNumberKey(event) { var keyCode = window.event ? event.keyCode : event.which; if (event.keyCode === 8 // backspace || event.keyCode === 46 //

很久以前,if在这个网站上发现了一些代码,阻止了用户在文本框中输入字母,并且成功了。自从找到这段代码后,我对它进行了修改和添加,但现在它不起作用了。这就是我的代码:

var count = 1

function isNumberKey(event) {
var keyCode = window.event ? event.keyCode : event.which;

if (event.keyCode === 8 // backspace
|| event.keyCode === 46 // delete
|| event.keyCode === 13 // enter key
|| event.keyCode === 9 // tab
|| event.keyCode === 116 // F5 (refresh)
|| event.keyCode === 112 // F1
|| event.keyCode === 113 //F2
|| event.keyCode === 114 //F3
|| event.keyCode === 115 //F4
|| event.keyCode === 117 //F6
|| event.keyCode === 118 //F7
|| event.keyCode === 119 //F8
|| event.keyCode === 120 //F9
|| event.keyCode === 121 //F10
|| event.keyCode === 122 //F11
|| event.keyCode === 123 //F12
) {
return true;
}
else if ( key < 48 || key > 57) {
if (count < 6) {
count++; //adds one to count
}
else {
alert("Please Only Enter Numerical Values");
count = 1;
}
return false;
}
else return true;
}
var计数=1
函数isNumberKey(事件){
var keyCode=window.event?event.keyCode:event.which;
如果(event.keyCode==8//backspace
||event.keyCode==46//删除
||event.keyCode==13//输入键
||event.keyCode==9//tab
||event.keyCode==116//F5(刷新)
||event.keyCode==112//F1
||event.keyCode==113//F2
||event.keyCode===114//F3
||event.keyCode===115//F4
||event.keyCode===117//F6
||event.keyCode===118//F7
||event.keyCode==119//F8
||event.keyCode===120//F9
||event.keyCode==121//F10
||event.keyCode==122//F11
||event.keyCode===123//F12
) {
返回true;
}
否则,如果(键<48 | |键>57){
如果(计数<6){
count++;//将一个添加到count
}
否则{
警报(“请仅输入数值”);
计数=1;
}
返回false;
}
否则返回true;
}
我不是说我写了这段代码,但是有人能看到代码有什么问题吗?

这应该可以:

textBox.onkeypress = function(e) {
    e = e || window.event;
    var charCode = (typeof e.which == "undefined") ? e.keyCode : e.which;
    var charStr = String.fromCharCode(charCode);
    if (/\d/.test(charStr)) {
        return false;
    }
};

这会奏效的。它不起作用,因为您使用的是
key<48 | | key>57
而不是
event.keyCode<48 | | event.keyCode>57

var count = 1

function isNumberKey(event) {
    var keyCode = window.event ? event.keyCode : event.which;

    if (event.keyCode === 8 // backspace
        || event.keyCode === 46 // delete
        || event.keyCode === 13 // enter key
        || event.keyCode === 9 // tab
        || event.keyCode === 116 // F5 (refresh)
        || event.keyCode === 112 // F1
        || event.keyCode === 113 //F2
        || event.keyCode === 114 //F3
        || event.keyCode === 115 //F4
        || event.keyCode === 117 //F6
        || event.keyCode === 118 //F7
        || event.keyCode === 119 //F8
        || event.keyCode === 120 //F9
        || event.keyCode === 121 //F10
        || event.keyCode === 122 //F11
        || event.keyCode === 123 //F12
    ) {
        return true;
    }
    else if ( event.keyCode < 48 || event.keyCode > 57) {
        if (count < 6) {
            count++; //adds one to count
        }
        else {
            alert("Please Only Enter Numerical Values");
            count = 1;
        }
        return false;
    }
    else return true;
}
var计数=1
函数isNumberKey(事件){
var keyCode=window.event?event.keyCode:event.which;
如果(event.keyCode==8//backspace
||event.keyCode==46//删除
||event.keyCode==13//输入键
||event.keyCode==9//tab
||event.keyCode==116//F5(刷新)
||event.keyCode==112//F1
||event.keyCode==113//F2
||event.keyCode===114//F3
||event.keyCode===115//F4
||event.keyCode===117//F6
||event.keyCode===118//F7
||event.keyCode==119//F8
||event.keyCode===120//F9
||event.keyCode==121//F10
||event.keyCode==122//F11
||event.keyCode===123//F12
) {
返回true;
}
否则如果(event.keyCode<48 | | event.keyCode>57){
如果(计数<6){
count++;//将一个添加到count
}
否则{
警报(“请仅输入数值”);
计数=1;
}
返回false;
}
否则返回true;
}

这是在我询问时提出的,因此在这里可能值得补充的是,
keyCode
charCode
被弃用,因为此时,接受的答案可能不是最好的

添加检查或实现isNumberKey函数的更好方法可以是:

const isNumberKey = (event: KeyboardEvent) => 
   ((event.key.length > 1) || event.key.match(/^\d|-$/))

这样,我们选中allow special keys do the function(允许特殊键执行其功能),同时确保在按下单字符键时只允许数字。

当您说Not work(不工作)时,您会遇到什么错误/行为?它仍然允许用户输入字母出于某种原因,当按下按钮时,它不会调用函数isNumberkey()!您已经将event.keyCode分配给顶部的keyCode变量。所以最好在方法的其余部分使用它来获得更干净的代码。
var charCode=(typeof e.which==“undefined”)?e、 键码:e.which可以进一步降低为
var charCode=e.which | e.keyCode谢谢,这一定是问题所在,由于某种原因,我得到了很多系统引用错误(使用firebug),这一定会使代码表单停止工作