2
我有这个整洁的脚本来处理,当用户将点击从一个复选框移到另一个复选框来选择倍数。Shift点击引导程序/ FlatUI复选框
var last_clicked = null;
$("table.multi-select").on("click", "input:checkbox", function (e) {
// allow shift clicking
var grid = $(this).parents("table");
if (!last_clicked)
last_clicked = this;
if (event.shiftKey) {
var start = grid.find("tbody input:checkbox").index(this);
var end = grid.find("tbody input:checkbox").index(last_clicked);
for (i = Math.min(start, end) ; i <= Math.max(start, end) ; i++) {
grid.find("tbody input:checkbox")[i].checked = last_clicked.checked;
}
}
last_clicked = this;
});
它运作良好。我现在将我的复选框替换为带风格的引导程序/ FlatUI。这些隐藏了实际的复选框并将其替换为样式标签。我已经修改了我的移位点击脚本
$("table.multi-select").on("click", "label.checkbox", function (e) {
// allow shift clicking
var grid = $(this).parents("table");
if (!last_clicked)
last_clicked = this;
if (event.shiftKey) {
var start = grid.find("tbody label.checkbox").index(this);
var end = grid.find("tbody label.checkbox").index(last_clicked);
// find checked state of last clicked
var checked_last = $(last_clicked).hasClass("checked");
for (i = Math.min(start, end) ; i <= Math.max(start, end) ; i++) {
// don't check 'this', because flatUI will toggle it when we're done
if(i != start)
$(grid.find("tbody label.checkbox input:checkbox")[i]).checkbox(checked_last ? "check" : "uncheck");
}
}
last_clicked = this;
});
这也适用。问题是,它也会选中复选框之间的页面上的所有文本!我如何阻止这种情况发生?
除非我们看到一个实际的例子,很难说。但你可以尝试[取消选择文本](http://stackoverflow.com/questions/6186844/clear-a-selection-in-firefox/6187098#6187098)? – mccannf 2014-10-02 16:09:46
@ mccannf,这是做的伎俩。发布这个答案,我会接受它! – roryok 2014-10-02 18:11:32