Javascript正则表达式禁用shift,alt和ctrl键

时间:2015-04-23 14:19:58

标签: javascript regex keypress onkeydown

我使用以下RegEx来禁用除数字,逗号和点之外的所有内容。

function isNumber(evt) {
    var theVal = $(evt).val();
    var theEvent = theVal || window.event;
    var key = theEvent.keyCode || theEvent.which;

    key = String.fromCharCode(key);

    if (key.length == 0) return;
    var regex = /^[0-9.,\b]+$/;

    if (!regex.test(key)) {
        theEvent.returnValue = false;
        if (theEvent.preventDefault) theEvent.preventDefault();
    }
}

HTML代码:

<input type="text" id="number" onkeydown="isNumber($(this));" />

它工作得很好但是如果我按住 Shift 键,那么我可以在框中输入字母和特殊字符,我不希望用户能够做到。

为了阻止 Shift Ctrl Alt 键,我还需要添加到上面的RegEx中?

1 个答案:

答案 0 :(得分:5)

它不起作用的原因是因为SHIFT是KEYDOWN事件(shiftKey == true和keyCode == 0),当你按下另一个键时,会触发第二个事件,这就是它显示的原因符号。

如果您将活动更改为onkeypress,则该活动应该有效。

另外,你根本不需要jQuery,请看这里:

https://jsfiddle.net/1569atLz/1/

警告:人们仍然可以复制粘贴到编辑框中(除非您检查是否有任何更改,而不仅仅是按键),因此请务必在发送时始终验证服务器端数据!任何人都可以轻松按F12并使用开发工具强制更改。