sad*_*ave 8 jquery input keystroke backspace
如果使用jquery专注于2个特定输入字段以外的任何内容,如何禁用退格键击?
这是我目前的代码(现在包括2个文本框):
$(document).keypress(function(e){
var elid = $(document.activeElement).attr('id');
if(e.keyCode === 8 && elid != 'textbox1' || elid != 'textbox2'){
return false;
};
});
Run Code Online (Sandbox Code Playgroud)
这不起作用....任何想法?
Kar*_*han 12
我认为这样可以解决问题:
$(document).keydown(function(e) {
var elid = $(document.activeElement).hasClass('textInput');
if (e.keyCode === 8 && !elid) {
return false;
};
});
Run Code Online (Sandbox Code Playgroud)
假设文本框具有类'textInput'.
这将禁用站点上的退格,而无需向输入框添加特定类.要禁用退格键,除非使用输入框时使用.is("input:focus")如果要禁用退格键,除非使用textarea框时使用.is("input:focus,textarea:focus")
$(document).keypress(function(e){
var elid = $(document.activeElement).is("input:focus");
if(e.keyCode === 8 && !elid){
return false;
};
});
Run Code Online (Sandbox Code Playgroud)
Hudson-Peralta + QF_Developer的解决方案很棒,但它有一个缺陷:
如果你的焦点在一个单选按钮或复选框上,退格按钮仍会让你退出页面.这是一个避免这种差距的修改:
$(document).keydown(function(e){
var elid = $(document.activeElement).is('input[type="text"]:focus, textarea:focus');
if(e.keyCode === 8 && !elid){
return false;
};
});
Run Code Online (Sandbox Code Playgroud)
编辑20130204:
keypress()取而代之keydown()!
上面的代码现在可以正常工作.
编辑20151208:
正如@outofmind的评论中所提到的,当按下退格键时,有更多的输入类型可能会让你失望.请在is()方法的逗号分隔选择器列表中添加任何类型的输入字段,这些字段允许直接输入字符,并且实际上在HTML代码中使用,例如input[type="password"]:focus,input[type="number"]:focus或input[type="email"]:focus.
我认为需要稍微修改来处理textareas:
var elid = $(document.activeElement).is("input:focus, textarea:focus");
Run Code Online (Sandbox Code Playgroud)