码迷,mamicode.com
首页 > Web开发 > 详细

工作中遇到的js错误(随时补充)

时间:2018-06-09 16:44:42      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:因此   自己   amp   第一个   var   function   使用   har   粘贴   

自己在工作中,写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错误(随时补充)

标签:因此   自己   amp   第一个   var   function   使用   har   粘贴   

原文地址:https://www.cnblogs.com/xuyd1108/p/9159810.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!