工作中遇到的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错误(随时补充)的主要内容,如果未能解决你的问题,请参考以下文章

片段事务中的实例化错误

js常用代码片段

Relay.js 没有正确解析组合片段

几个关于js数组方法reduce的经典片段

VSCode 配置 用户自定义代码片段 自定义自动代码补充

在python 3.6中处理自定义编码时遇到类型错误