工作中遇到的js错误(随时补充)
Posted 言灵之书
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工作中遇到的js错误(随时补充)相关的知识,希望对你有一定的参考价值。
自己在工作中,写js的时候经常遇到一些不符合预期的错误,特此记录下来:
1.火狐和谷歌关于keycode事件的兼容:写了一段js控制输入框只能输入数字,但是发现在谷歌浏览器就可以使用,但是放到火狐里面就是不能输入数字。
$(".money").live("keypress", function (event) { var e = event ? event :(window.event ? window.event : null); var keyCode=e.keyCode; if ((keyCode >= 48 && keyCode <= 57) || keyCode == 8) { } else { return false; } })
此段代码在火狐里面,就是不能输入数字,然后发现每次输出keyCode发现都是为0,感觉获取keyCode出错了,于是再查资料发现,火狐的keyCode和谷歌的获取方式不一样。因此代码修改为:
$(".money").live("keypress", function (event) { var e = event ? event :(window.event ? window.event : null); var keyCode=0; //此处不同 keyCode=e.keyCode||e.which||e.charCode; if ((keyCode >= 48 && keyCode <= 57) || keyCode == 8) { } else { return false; } })
这样的话就可以兼容谷歌和火狐限制输入数字。当然如果粘贴复制过去就不能控制了,因此在输完之后应该也做一次校验。
2.关于js数字大小比较问题:
1 var first = ‘1234‘; 2 var second = ‘132‘; 3 console.log(first < second); //true
这是因为这是字符串比较,按照一个字母一个字母比较,比较第一个字母1,相等,第二个字母3>2,所以为true;
平时用jquery获取输入框里面的值其实都是这种形式如果直接比较肯定出错。需要先换成数字比较
var first = ‘1234‘; var second = ‘132‘; console.log(parseInt(second) < parseInt(first)); // true //等同于 var first = 1234; var second = 132; console.log(second < first); //true
以上是关于工作中遇到的js错误(随时补充)的主要内容,如果未能解决你的问题,请参考以下文章