我必须从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