我正在使用以下函数来填充一些组合框。
<script type="text/javascript">
function getcompany() {
$.post('filters.php',
$('form[name="report1"]').serialize(),
function (output) {
var options = output.split(',');
$('#M1').html(options[0]).show();
$('#T1').html(options[1]).show();
$('#I1').html(options[2]).show();
$('#C1').html(options[3]).show();
});
}
</script>
这是由OnChange事件触发的,如果用户只想按组合框中的一个项目进行过滤,则可以正常工作。但是,如果使用Control或Shift键以选择多个项目,则在选择下一个项目之前更改选项。所以,我需要的是一种方法来检测这些键中的任何一个是否关闭,暂停该功能,然后在释放该键后恢复它。
答案 0 :(得分:1)
经过另一天的尝试,我想出了这个。还添加了shift键。
<script type="text/javascript">
//Set default variable to no
downkey = "No";
//Set variable to yes if key(s) are down
$(document).keydown(function(down){
if(down.keyCode == 16 || down.keyCode == 17) {
downkey = "Yes";
}
});
//Return variable to no and call the function when the key(s) are released
$(document).keyup(function(up){
if(up.keyCode == 16 || up.keyCode == 17) {
downkey = "No";
getcompany();
}
});
</script>
<script type="text/javascript">
function getcompany() {
if(downkey == "No"){//Checks the downkey variable to see if it is currently set to Yes or No
$.post('filters.php',
$('form[name="report1"]').serialize(),
function (output) {
var options = output.split(',');
$('#M1').html(options[0]).show();
$('#T1').html(options[1]).show();
$('#I1').html(options[2]).show();
$('#C1').html(options[3]).show();
});
}
}
</script>
答案 1 :(得分:-1)
我还没有测试过这个,但您可以确定是否使用事件对象按下了控制键。 e.ctrlKey
button.onclick = function (e) {
if (e.ctrlKey) {
// do nothing
}else {
getCompany();
}
}
移位键e.shiftKey
button.onclick = function (e) {
if (e.ctrlKey || e.shiftKey) {
// do nothing
}else {
getCompany();
}
}