为了账号安全,请及时绑定邮箱和手机立即绑定

关于JS判断keycode的问题。估计你们都没遇到过

关于JS判断keycode的问题。估计你们都没遇到过

哈士奇WWW 2018-10-19 14:11:23
我想通过JS来禁用键盘按下的减号。也就是按减号的时候我return false;但是问题来了。英文减号被我禁掉了,中文减号还是会写进去。这是我很不解的。 $(document).on("keydown",'.floatNumber ',function(e){          var keynum;        if(window.event) // IE        {            keynum = e.keyCode        }        else if(e.which) // Netscape/Firefox/Opera        {            keynum = e.which        }        //229为中文减号,189为英文减号        if(keynum==229||keynum==189){            return false        }           })跪求大神解决这个问题。输入框里面按中英文的减号都不让它输入
查看完整描述

1 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

这是因为对于一些键盘语言有一个占位符的概念,就像你在打中文字。我做了一个GIF动画,你会看更明白。

https://img1.sycdn.imooc.com//5bfb99410001a0e503440046.jpg

可以看出 229 并非所谓中文减号,只是一个在非一些键盘语言上的占位符倒置的值,而且这个值好像在不同浏览器上是不一样的。

但是在输入中文减号时为什么没有显示占位符,那是因为“太快了”,中文的减号在录入过程中也是占位的。

解决办法

我认为可以考虑使用正则,比如:

$(document).on("keydown",'.floatNumber ',function(e){    let el = $(this);
    el.val(el.val().replace(/[^.0-9]+/g, ''));
})


查看完整回答
反对 回复 2018-11-26
  • 1 回答
  • 0 关注
  • 614 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号