我有一系列JQuery-UI复选框,其中设置了一个事件处理程序并且工作正常。我希望能够在按下shift / CTRL按钮时单击复选框时更改行为。问题是,当我按住它们时单击复选框时实际上没有发生任何事情。
在我看来,按钮被选中/突出显示而不是点击。如何在按下shift键时停止此操作并注册咔嗒声?
例如:https://jsfiddle.net/51c72b20/
<script>
$(function() {
$( "#format" ).buttonset();
});
</script>
<div id="format">
<input type="checkbox" id="check1"><label for="check1">Alpha</label>
<input type="checkbox" id="check2"><label for="check2">Bravo</label>
<input type="checkbox" id="check3"><label for="check3">Charlie</label>
</div>
答案 0 :(得分:0)
您可以使用CSS属性禁用文本选择(请参阅:How to disable text selection highlighting using CSS?)。
将此CSS添加到#format元素中,如下所示:
#format{
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
然后添加你的班次按键跟踪:
var shiftDown = false;
$(document).on('keydown', function(e){
if(e.which == 16 && !shiftDown){ shiftDown = true; }
});
$(document).on('keyup', function(e){
if(e.which == 16 && shiftDown){ shiftDown = false; }
});
最后添加您的点击方法并确定是否正在进行轮班:
$('#format label').on('click', function(){
if(shiftDown){
//$(this) was clicked while shift was down
}
else{
//$(this) was clicked while shift was not down
}
});
最终结果:https://jsfiddle.net/55wpdp4d/
注意:最终结果在Firefox中表现奇怪,因为当您移动+单击一个按钮时,它的行为不正常......会调查它,但不会对解决方案做出承诺。