我正在开发一个旧的应用程序,使其与firefox兼容。由于旧的应用程序不使用Jquery,我必须使用Javascript来完成所有的工作。
我有一个用于输入日期的输入字段。此字段应仅允许0-9数字值。所以我修改了这样的代码,使其与firefox兼容。
var event = window.event || ffEvent ; //ffEvent is the function argument
var intKeyCode = event.keyCode || event.which;
if (intKeyCode < 48 || intKeyCode > 57){
if(event.preventDefault){
event.preventDefault();
}
else{
event.returnValue = false;
}
}
但现在问题是event.returnValue = false
允许像Backspace,Tab,Delete,Arrow buttons
这样的键,event.preventDefault()
不允许这些按钮。必须允许这些按钮用于输入字段。
对于firefox,有没有与event.returnValue=false
答案 0 :(得分:0)
为什么不使用keyCodes检查字符是否为数字
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
var event = window.event || ffEvent ; //ffEvent is the function argument
var intKeyCode = event.keyCode || event.which;
if (intKeyCode > 31 && (intKeyCode < 48 || intKeyCode > 57))
return false;
return true;
}
在输入字段的按键中调用此事件,如
onkeypress="return isNumberKey(event)
答案 1 :(得分:0)
当密钥是您想要允许的密钥之一时,您只需跳过event.preventDefault()
:
window.onload = function () {
document.getElementById('myField').onkeypress = function (event) {
var keyCode = event.keyCode || event.which,
allowedKey = keyCode === 8 || // backspace
keyCode === 9 || // tab
keyCode === 13 || // enter
keyCode === 37 || // left
keyCode === 39 || // right
keyCode === 46 || // del
(keyCode >= 48 && keyCode <= 57);
if (!allowedKey) {
event.preventDefault();
}
};
};
<input type="text" id="myField" />