我的表单中有许多按行排列的复选框元素。我想实现一个允许用户持有Cntrl的函数,然后选择一个复选框并让每个框都有:
A)检查是否没有初始框检查
B)从最近的复选框中选中
这可能吗?非常感谢。
答案 0 :(得分:3)
这可以帮到你。
代码适用于shift+key
// Usage: $form.find('input[type="checkbox"]').shiftSelectable();
// replace input[type="checkbox"] with the selector to match your list of checkboxes
$.fn.shiftSelectable = function() {
var lastChecked,
$boxes = this;
$boxes.click(function(evt) {
if(!lastChecked) {
lastChecked = this;
return;
}
if(evt.shiftKey) {
var start = $boxes.index(this),
end = $boxes.index(lastChecked);
$boxes.slice(Math.min(start, end), Math.max(start, end) + 1)
.attr('checked', lastChecked.checked)
.trigger('change');
}
lastChecked = this;
});
};
信用:jQuery plugin for shift + click to select multiple checkboxes