我有一个小函数,仅允许数字输入。它在 IE 中工作得很好,但我无法让它在 FireFox 或 Chrome 中工作。我已将此 js 文件加载到 HTML 页面的脚本标记中。
var numberOnly = function(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;
}
};
var wireElemToEvent = function(elemId, event, func){
var elem = document.getElementById(elemId);
if (typeof window.event !== 'undefined') {
elem.attachEvent("on" + event, func);
} else {
elem.addEventListener(event, func, true);
}
};
var wireEvents = function(){
wireElemToEvent("tbxQuantity", "keypress", numberOnly);
wireElemToEvent("tbxPhone", "keypress", numberOnly);
wireElemToEvent("tbxZip", "keypress", numberOnly);
};
window.onload = wireEvents;
Chrome 告诉我
file:///C:/Documents%20and%20Settings/xxx/Desktop/numbersonly/res/js/numbersonly.js:17Uncaught TypeError: Object #<an HTMLInputElement> has no method 'attachEvent'
知道我做错了什么吗?
最佳答案
在 wireElemToEvent
您可能需要检查elem
初始化后不为空。另外,最好检查 elem.attachEvent
是否存在。和elem.addEventListener
而不是是否 window.event
已定义。
关于Javascript 跨浏览器脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2186462/