强制仅限数字的js函数不'不适用于Firefox,但适用于Chrome;IE运行良好
Force numeric only js function doesn't work in Firefox but in Chrome & IE works fine
我有一个javascript函数,它拒绝除数字字符之外的任何字符:
$(".number").keypress(this.EnsureNumbers);
EnsureNumbers: function (event) {
var value = $(this).first().val();
value = value.substring(0, $(this)[0].selectionStart) + String.fromCharCode(event.keyCode) + value.substring($(this)[0].selectionEnd);
if (!value.match(/^'d+$/)) {
event.preventDefault();
}
}
此功能允许用户(如果使用Chrome/IE)选择数字的任何部分(通过使用SHIFT键)并更改所选数字/字母。
但在Firefox中,这种方法不允许我按Backspace键或使用左/右键。
同样,在Chrome和IE(甚至IE8)中运行良好。有人知道Direfox里有个虫子吗?还是我的?
我有火狐22。
例如,请看一下:http://jsfiddle.net/TR8t4/
正如@Barmar所说,这是Mozilla FF.中不正确的行为
有一次我也面临这样的问题。但我通过检测类似$.browser.mozilla
的浏览器来解决问题。尽管这在最新版本的jQuery中已经贬值了。
我在这里做的是
$('selector').keypress(function(event){
if($.browser.mozilla == true){
if (event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 9 || event.keyCode == 16 || event.keyCode == 46){
return true;
}
}
if (event.which < 48 || event.which > 57) {
event.preventDefault();
}
});
JSFiddle供您参考。
是的,这是Firefox中的一个bug。当您使用编辑键和箭头键时,它会触发keypress
事件。这些键应该触发keydown
,而不是keypress
。
QuirksMode的兼容性矩阵中列出了这种不正确的行为。
相关文章:
- HTML5 Canvas toDataURL(“image/png”)适用于一些绘画,而有些则不然,不确定原因
- JavaScript不显示剩余字符,但适用于其他页面
- 我如何完善这个Javascript代码,使其只适用于来自图像的链接(而不是来自文本的链接)
- 为什么这只适用于身体部分而不是头部
- 为什么不't此正则表达式适用于重复出现的对
- document.getElementById 对内部 html 的调用适用于 $_POST 和 $_GET 变量,但不
- JavaScript 位置适用于本地主机而不是服务器
- Rally App SDK 2.0:Rallymultiobjectpicker,适用于不显示displayField的
- jQuery事件在Mozilla上不起作用,并且适用于其他浏览器
- Angular.js - 控制器不为索引执行,适用于其余模板
- D3 .on 更改适用于文本而不是图表
- Zillow 数据 - json_encode不起作用 - 适用于常规变量
- 弹出模式仅适用于表格中的第一个元素,第二次单击后不会再次打开
- Phonegap Android项目适用于模拟器,而不是实际的手机
- ajax jonp 不应该适用于 请求的上不存在“访问控制-允许源”标头
- AngularJS:ng-单击不起作用,适用于<按钮>
- Javascript不会在移动设备上加载.适用于桌面
- 为什么我的代码适用于高度:100px,而不是高度:100%
- 拖放区.js + Laravel-多文件上传不起作用(仅适用于一个文件)
- 哪些限制适用于不透明响应