Javascript正则表达式以禁用shift、alt和ctrl键
我使用下面的正则表达式来禁用除数字、逗号和点以外的所有字符Javascript正则表达式以禁用shift、alt和ctrl键,javascript,regex,keypress,onkeydown,Javascript,Regex,Keypress,Onkeydown,我使用下面的正则表达式来禁用除数字、逗号和点以外的所有字符 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;
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键呢?它不起作用的原因是因为Shift是一个向下键事件(shiftKey==true和keyCode==0),当您按下另一个键时,会触发第二个事件,这就是它显示符号的原因 如果您将事件更改为按键,它应该可以工作 此外,您根本不需要jQuery,请参见此处:
警告:人们仍然可以复制粘贴到编辑框中(除非您检查任何更改,而不仅仅是按键),因此在发送数据时确保始终验证服务器端!任何人都可以轻松地按F12键并使用开发工具强制进行更改。它不起作用的原因是SHIFT是一个向下键事件(shiftKey==true和keyCode==0),当您按另一个键时,会触发第二个事件,这就是它显示符号的原因 如果您将事件更改为按键,它应该可以工作 此外,您根本不需要jQuery,请参见此处:
警告:人们仍然可以复制粘贴到编辑框中(除非您检查任何更改,而不仅仅是按键),因此在发送数据时确保始终验证服务器端!任何人都可以轻松地按F12键并使用开发工具强制进行更改。在这种情况下,你有没有一个很好的理由不像任何理智的开发人员所想的那样使用
?你会惊讶地发现,实现你想要的东西是多么复杂。与其重新发明轮子,我建议使用一个现有的插件,它已经涵盖了你将遇到的所有边缘情况:为什么isNumber($(这个))代码>和非isNumber(事件)代码>?在这种情况下,你有没有一个很好的理由不像任何理智的开发人员那样使用
?你会惊讶地发现实现你想要的东西是多么复杂。与其重新发明轮子,我建议使用一个现有的插件,它已经涵盖了你将遇到的所有边缘情况:为什么isNumber($(这个))代码>和非isNumber(事件)代码>?我发现这是准确的我发现这是准确的