工作中遇到的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

猜你喜欢

转载自www.cnblogs.com/xuyd1108/p/9159810.html
今日推荐