[英]java script backspace and delete working in IE,not in FireFox
我使用以下函數進行十進制驗證,它在IE中工作正常,Chrome不在FF.Backspace和刪除鍵工作在IE和Chrome.Not在FireFox
$('.decimalValidate').live('keypress', function (e) {
var decimalid = $(this).attr("id");
var decimalval = $('#' + decimalid).val();
var decimalvalidate = ApplyDecimalFilter(decimalval, e);
if (decimalvalidate == false) return false;
});
function ApplyDecimalFilter(id, event)
{
try {
return NewDecimalFilter(id, event);
} catch (e) {
alert(e.message);
}
}
function NewDecimalFilter(o, event) {
if (event.which > 47 && event.which < 58) {
return true;
}
if (event.which == 50 ||(event.which == 8 || event.which == 46) && o.indexOf('.') == -1) {
return true;
}
return false;
}
此if條件僅在FireFox中不起作用。這用於輸入唯一的點符號
if (event.which == 50 ||(event.which == 8 || event.which == 46) && o.indexOf('.') == -1) {
return true;
}
通常,這種類型的驗證需要謹慎進行,因為文本可以通過鍵盤以外的方式(例如粘貼,文本拖動和上下文菜單中的“刪除”選項)更改為輸入。 在提交表單時,限制鍵盤輸入仍需要伴隨正確的驗證。
使用keyCode
,用於檢測(通常在按壓實際鍵keydown
或keyup
而不是keypress
)和which
檢測輸入(只在字符keypress
事件)。 一般來說,查看keypress
事件的keyCode
屬性並不是一個好主意,但對於delete和backspace的情況,它很好:並非所有瀏覽器都為這些鍵觸發了一個keypress
事件,但對於那些鍵盤事件, keyCode
屬性是一致的。
總結:將(event.which == 8 || event.which == 46)
更改為(event.keyCode == 8 || event.keyCode == 46)
,其余部分保持不變。
這是我見過的JavaScript關鍵事件的最佳參考: http : //unixpapa.com/js/key.html
$('#Name_Var').keypress(function (event) { event = event || window.event; var charCode = event.which || event.keyCode; var charStr = String.fromCharCode(charCode); // FireFox key Del - Supr - Up - Down - Left - Right if (event.key !== undefined && event.charCode === 0) { return; } //Only Num if (!/^([0-9])*$/.test(charStr)) { event.preventDefault(); } //Num and letters if (!/^[a-zA-Z0-9]+$/.test(charStr)) { event.preventDefault(); } });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.