Javascript 跨浏览器脚本

标签 javascript cross-browser dom-events

我有一个小函数,仅允许数字输入。它在 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/

相关文章:

javascript - 匹配前面没有转义字符的双引号

events - GWT FocusPanel、Tab 键和焦点处理程序

html - 当屏幕为 768 像素宽时,为什么我的 css 样式表的 html 链接不起作用?

javascript - 在 Backbone View 中触发 el 事件

JavaScript 代理 : set does not trigger when modifying objects in an array

JavaScript 使用 EventListener 和 jQuery 添加和删除 <tr>

javascript - 使用参数作为属性

css - 具有背景图像的元素的不透明度,例如 IE7-IE8 中的输入字段

javascript - 如何在 Google map 上的每次点击事件中获取 x 和 y 编号?

javascript - 如何在 Android webview 中通过 ID 捕获元素点击?