OnChange - 如果移位或控制键关闭,则暂停功能

时间:2015-07-16 02:47:08

标签: javascript jquery

我正在使用以下函数来填充一些组合框。

<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键以选择多个项目,则在选择下一个项目之前更改选项。所以,我需要的是一种方法来检测这些键中的任何一个是否关闭,暂停该功能,然后在释放该键后恢复它。

2 个答案:

答案 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();
    }
}