分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

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

发布时间:2023-09-06 01:59责任编辑:顾先生关键词: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错误(随时补充)

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved