最近遇到的javascript问题总结
2010-05-24 23:36 by hackerzhou看了很多网上的资料说是firefox的事件要通过一个隐含的e来调用,检验下来发现不尽然.
我的Firefox版本3.6.3,IE版本8.0,onkeydown=”b1OnKeyDown(event,this,3);”用过这一句可以将event传进b1OnKeyDown函数中,可以发现Firefox和IE用的都是event,只不过Firefox的event对象是在时间触发后才会生成,而IE可以用过window.event调用,这个特点被广泛被用来判断浏览器。获得键盘输入键值的区别在于IE使用event.keyCode,Firefox和Opera使用event.which。
function b1OnKeyDown(eventObj,item,decimalPrecision){ var key=window.event?eventObj.keyCode:eventObj.which; ...
可以用来获得键盘的keycode。
今天遇到了一个相当诡异的问题,IE下通过alert调试发现keycode都是229,有时候正常,查了对应的是Ecircumflex,不明白是啥意思,上网搜了一下发现是由于输入法的问题,IE下开启输入法的时候就会导致这个错,用CSS代码ime-mode:disabled;关闭输入法后正常。
还用到了一个IE/FF浏览器兼容的丢弃事件代码,可以用来在onkeydown/onkeypress事件中过滤用户输入:
function discardEvent(eventObj){ if(window.event){ eventObj.returnValue=false; }else{ eventObj.preventDefault(); } }
已经把一些输入框功能实现了:
1.即时过滤不合法的输入,也就是说不合法的输入根本无法键入输入框
2.小数位数自定义,超出也不纪录
3.千分位自定义,失去焦点之后自动千分
4.price类型自动添加货币符号
5.获取焦点之后去除格式化