我必須從html輸入中禁用一些符號。 e.which
在Firefox上無法正常工作。 Firefox禁用backspace
等。 這裏是JS Fiddle:關鍵代碼在Firefox上
var code = window.event ? event.keyCode : e.which;
event.keyCode
在Firefox的作品,但不與String.fromCharCode(code)
工作。
我必須從html輸入中禁用一些符號。 e.which
在Firefox上無法正常工作。 Firefox禁用backspace
等。 這裏是JS Fiddle:關鍵代碼在Firefox上
var code = window.event ? event.keyCode : e.which;
event.keyCode
在Firefox的作品,但不與String.fromCharCode(code)
工作。
你已經在你的腳本有兩個錯誤:
event
但提到e.which
。 2.您必須撥打 evt.preventDefault()
以防止鍵入的字符出現。
添加jQuery事件處理函數時,後一點是錯誤的。 '正常'DOM處理程序要求preventDefault()
,另請參閱this comment。
$('#foo').keypress(function(evt) {
var code = window.event ? event.keyCode : evt.which;
var chr = String.fromCharCode(code);
if (".,".indexOf(chr) < 0) {
return false;
}
});
jQuery的標準化e.which
,所以你不必擔心這個的。
此外,只聽正確的鍵碼就容易多了,沒有理由將鍵碼轉換爲字符,只需要用indexOf
進行過濾?
$('#foo').keydown(function(e) {
var code = e.which;
if (code == 8 || code == 13) return true; // backspace and enter
if (code < 48 || code > 57 || code == 188 || code == 190) return false;
});
要保持最活躍的鑰匙,只是主要禁用的字符,你可以過濾這樣
$('#foo').keydown(function(e) {
var key = e.which;
if (!e.shiftKey && !e.altKey && !e.ctrlKey &&
key >= 48 && key <= 57 || // numbers
key >= 96 && key <= 105 || // Numeric keypad
key == 190 || key == 188 || key == 109 || key == 110 || // comma, period and minus, . on keypad
key == 8 || key == 9 || key == 13 || // Backspace and Tab and EnterEnd
key == 35 || key == 36 || // Home and
key == 37 || key == 39 || // left and right arrows
key == 46 || key == 45) // Del and Ins
return true;
return false;
});
evt.preventDefault();等於返回false – Srw
@Srw你是對的,至少在使用jQuery事件處理程序時。 – ComFreek