我有以下 javascript 来防止用户在文本字段中输入无效字符。它在 chrome 中运行良好,但在 firefox 中运行良好。它阻止在 firefox 的文本字段中输入 backspace 键。
function onlyNumbers(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode( key );
var regex = /[0-9]|\./;
if( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
任何人都可以看看并提出修复 firefox 的方法,以防止退格键作用于文本字段吗?
可能我猜,为退格字符添加正则表达式就可以完成这里的工作。有谁知道,如何添加匹配 backspace
的正则表达式编辑:
此外,上面的代码应该会被 Tab 键行为打断,我无法使用 Tab 键跳转到表单中的下一个字段。
最佳答案
参见 http://jsfiddle.net/8ZJZD/1/
var el=document.getElementById('cnfMobileNo');
el.onkeydown=function onlyNumbers(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
if(key===8){return;}
key = String.fromCharCode(key);
var regex = /[0-9]|\./;
if( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
只需使用if(key===8){return;}
编辑:
如果你想排除更多的键,使用
var el=document.getElementById('cnfMobileNo');
el.onkeydown=function onlyNumbers(evt) {
var theEvent = evt || window.event,
key = theEvent.keyCode || theEvent.which,
exclusions=[8,9]; /*Add exceptions here */
if(exclusions.indexOf(key)>-1){return;}
key = String.fromCharCode(key);
var regex = /[0-9]|\./;
if( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
在这里查看:http://jsfiddle.net/8ZJZD/2/
使用alert(key)
可以知道每个键的keyCode
(在 key = String.fromCharCode(key)
之前)。
你也可以排除
- 方向键:37、38、39、40
- 输入:13
- 上下文菜单:93
- 开始和结束:36,35
关于javascript - js在firefox中禁用退格功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12236721/