Shift 点击 bootstrap / FlatUI 复选框

16 浏览
0 Comments

Shift 点击 bootstrap / FlatUI 复选框

我有一个很棒的脚本,用于处理用户从一个复选框切换到另一个复选框以选择多个的情况。这个脚本的功能很好。我现在正在用样式化的bootstrap / FlatUI复选框替换我的复选框。这些复选框隐藏了实际的复选框,并用样式化的标签代替。我相应地修改了我的shift点击脚本。问题是,它还选中了复选框之间页面上的所有文本!我该如何阻止这种情况发生?

0
0 Comments

在处理Shift键的逻辑中,可以使用这个问题的答案来取消选择文本:

Clear a selection in Firefox

问题的原因是,在Bootstrap / FlatUI复选框中,通过Shift + 单击来选择多个复选框时,会出现问题。当按下Shift键并点击一个复选框时,它会被选中,但是当再次按下Shift键并点击其他复选框时,之前选中的复选框不会被取消选择。

解决方法是使用上述链接中提供的代码来清除在Firefox浏览器中的选择内容。具体代码如下:

// 解决Shift + 单击选择多个复选框的问题
$(document).on('mousedown', 'input[type="checkbox"]', function(e) {
    if (e.shiftKey) {
        // 清除选择内容
        if (window.getSelection) {
            if (window.getSelection().empty) {
                window.getSelection().empty();
            } else if (window.getSelection().removeAllRanges) {
                window.getSelection().removeAllRanges();
            }
        } else if (document.selection) {
            document.selection.empty();
        }
    }
});

这段代码通过在鼠标按下事件中判断Shift键是否按下,并在按下Shift键的情况下清除选择内容,从而解决了Shift + 单击选择多个复选框时的问题。

0