最近遇到的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.获取焦点之后去除格式化

本文基于 署名 2.5 中国大陆 许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 hackerzhou 并包含 原文链接
本文暂时还没有评论,你可以抢沙发哟。

发表评论