【问题标题】:Backspace key issue in firefoxFirefox中的退格键问题
【发布时间】:2018-04-16 14:13:41
【问题描述】:
我有一个文本框并仅使用 jquery 应用了 Allow Alphabets With Space。它在 chrome 中工作,但在 Firefox 中,退格键不起作用。
<input type="text" placeholder="" id="id1">
$(function(){
$('#id1').keypress(function (event) {
if ((event.which >= 65 && event.which < 91) || (event.which > 96 && event.which < 123) || event.which === 32 || event.which===0) {
return true;
}
else {
event.preventDefault();
}
})});
这里是Plnkr
【问题讨论】:
标签:
javascript
jquery
firefox
【解决方案1】:
浏览器处理退格字符的方式有所不同。在 Chrome 中,退格键永远不会到达 keypress 事件处理程序,但在 Firefox 中会。
如果您将|| event.which === 8 添加到条件中,您将允许退格并返回 true,这将使其在 Firefox 中工作。
编辑:上、下、左、右和 Tab 键在 Firefox 中也不起作用。
var ignoredKeys = [8, 9, 37, 38, 39, 40];
if (ignoredKeys.indexOf(event.which) >=0 || (event.which >= 65 && event.which < 91) || (event.which > 96 && event.which < 123) || event.which === 32 || event.which===0) {
return true;
} else {
event.preventDefault();
}
【解决方案2】:
这应该适用于所有 [主要] 浏览器:
$('#id1').keydown(function (event) {
if (event.which == 8) {
// ...
} else {
event.preventDefault();
}
);
注意使用keydown 而不是keypress,这对于它的工作至关重要。