好吧,我有类似的代码阻止键盘“全部选择”操作:
$(document).keydown(function(e){
// CTRL key
if ( e.which == '17' || e.which == '224' ){
window.isCtrlHold = true;
}
// A key
// Prevent from select all from a page ( ctrl + a )
if ( e.which == '65' && window.isCtrlHold ){
e.preventDefault();
}
});
从另一个地方调用的另一个脚本可以防止关闭预览代码:
$('input').focus(function(){
window.inSearch = true;
});
$(document).keydown(function(e){
// A ( "ctrl + a" if focus within text input )
if ( e.which == '65' && window.isCtrlHold && window.inSearch ){
// some code that do defult action eg "e.doDefault();"
}
});
最后,我需要防止“ctrl + a”(全选),而不是在输入[type = text]内,并且如果在输入中聚焦,则允许选择全部。
答案 0 :(得分:1)
我认为你接近这个错误的方式,只需将你的第一个代码更新为
$(document).keydown(function(e){
// CTRL key
if ( e.which == '17' || e.which == '224' ){
var isCtrlHold = true; //(note 1)
}
// A key
// Prevent from select all from a page ( ctrl + a )
if ( e.which == '65' && isCtrlHold && window.inSearch){
e.preventDefault();
}
});
注意&& window.inSearch
。
现在您可以删除此代码块
$(document).keydown(function(e){
// A ( "ctrl + a" if focus within text input )
if ( e.which == '65' && window.isCtrlHold && ! window.inSearch ){
// some code that do defult action eg "e.doDefault();"
}
});
修改:我发现您的代码中存在更多错误
注1:isCtrlHold
不应该是全局的,因为单击Ctrl(不保持)将永远使它true
(页面的生命周期)。尝试点按控件(不保留),然后尝试键入a
。
注2:你还应该添加如下内容:
$('input').blur(function(){
window.inSearch = false;
});
或者你的脚本总是认为serachbox是焦点,即使它不是。
注意3:preventDefault();
没有“相反”,你可以阻止默认行为,也可以不这样做。