[英]JS regex code doesn't work with firefox, but works on chrome and 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中的錯誤嗎? 還是我的?
我有Firefox 22。
示例,請看一下: http : //jsfiddle.net/TR8t4/
是的,這是Firefox中的錯誤。 當您使用編輯鍵和箭頭鍵時,它將觸發keypress
事件。 這些鍵應該觸發keydown
,但不keypress
。
在QuirksMode的兼容性列表中列出了此錯誤行為。
如@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供您參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.