js在Firefox中禁用退格功能 [英] js disabling backspace functionality in firefox
问题描述
我有下面的JavaScript,以防止用户输入无效字符到文本字段。它在Chrome中运行良好,但不是在Firefox中。这是防止在Firefox的文本字段中输入 backspace 键。
函数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();
$ / code $ / pre
任何人都可以请看看,并提出一个修复firefox不能防止退格键行事的文本字段?
可能我猜想,为退格字符添加正则表达式将在这里做的工作。有谁知道,如何添加匹配 backspace的正则表达式
编辑:
<此外,上面的代码应该已经被打断,因为 Tab 键行为,我不能使用 Tab 键跳转到表单中的下一个字段。 解决方案请参阅 http://jsfiddle.net/8ZJZD/1/
var el = document.getElementById('cnfMobileNo' );
el.onkeydown =函数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 =函数onlyNumbers(evt){
var theEvent = evt || window.event,
key = theEvent.keyCode ||事件,其中
排除= [8,9]; / *在这里添加异常* /
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();
$ / code $ / pre
$ b $ p 请看这里: http://jsfiddle.net/8ZJZD/2/
你可以使用 alert(key)
来了解每个键的 keyCode
( key = String.fromCharCode(key)
)。
您也可以排除
- 方向键:37,38,39,40
- Enter :13
- 上下文菜单:93
- 开始和结束:36,35
I have following javascript to prevent user from entering invalid characters into a text field. It's working well in chrome but not in firefox. It's preventing the backspace key to be entered in the text field in firefox.
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();
}
}
Can anyone please have a look and propose a fix for firefox to not prevent backspace key to act on a text field ?
Probably I guess, adding the regex for the backspace character would do the job here. Does anyone know, how to add the regex for matching the backspace
Edit:
Also, the above code has supposed to interrupted with the Tab key behaviour, I am not able to jump to next fields in the form using Tab key.
解决方案 see 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();
}
}
Just use if(key===8){return;}
Edit:
If you want to exclude more keys, use
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();
}
}
See it here: http://jsfiddle.net/8ZJZD/2/
You can know the keyCode
of each key using alert(key)
(before key = String.fromCharCode(key)
).
You could also exclude
- The arrow keys: 37,38,39,40
- Enter: 13
- Context menu: 93
- Start and End: 36,35
这篇关于js在Firefox中禁用退格功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!