JQuery selecionável apenas com atalho
-
25-09-2019 - |
Pergunta
Quero deixar o usuário selecionar quando a tecla Shift é mantida.
$("#div").selectable({
start: function(st) {
$(window).keydown(function(e){
if(!e.shiftKey){
st.stopPropagation();
}
});
});
não?
Solução
Você pode diminuir seu código para ser muito mais simples usando o .shiftKey
propriedade no evento diretamente (está presente no mousedown
evento também), assim:
$("#div").mousedown(function(e){
if(e.shiftKey) return;
e.stopImmediatePropagation();
return false;
}).selectable();
Outras dicas
Para quem precisa ou algo semelhante, isso funcionou bem para mim:
var shift = false;
$(window).keydown(function(e){
if(e.shiftKey){
shift = true;
}
})
.keyup(function(e){
if(!e.shiftKey){
shift = false;
}
});
$("#div")
.mousedown(function(e){
if(!shift){
e.stopImmediatePropagation();
return false;
}
})
.selectable();
$(window).keydown(function(e){
if(!e.shiftKey){
$("#div").selectable({
start: function(st) {
st.stopPropagation();
//your code here
});
}
});
Se isso não funcionar, tente usar o documento em vez de janela ou 'corpo'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow