选中当前复选框上方的所有复选框(如果按下 shift 键处于选中状态)
Select all the checkboxes above the current checkbox if selected with shift key pressed
我在html正文中有很多复选框,有些复选框有一个特定的css类。
我只是希望每当我选中一个按下 shift 键的复选框时,所有复选框仅在当前复选框上方,并且仅在之前某个事件中已经选中(选择)的复选框下方,相应的 css 类在 DOM 中选中(选择),应该自动选中(选择)。
其余所有复选框应保持不变。
这是我正在尝试做的:
.html
<input type="checkbox" class="select-row"/>
<input type="checkbox" class="select-row"/>
<input type="checkbox" />
<input type="checkbox" class="select-row"/>
<input type="checkbox" class="select-row"/>
<input type="checkbox" />
<input type="checkbox" class="select-row"/>
<input type="checkbox" class="select-row"/>
<input type="checkbox" />
<input type="checkbox" class="select-row"/>
.js:
$('.select-row').click(function(e){
if ( e && e.originalEvent.type === "click" && e.originalEvent.shiftKey === true) {
//what to write?
}
});
这是jsfiddlehttp://jsfiddle.net/839pS/8/
我该怎么做?
使用 .prevUntil()
函数选中前面的复选框,然后对它们执行所需的任何操作(例如将其 checked
属性设置为 true):
var $previousCheckboxes = $(this).prevUntil(':checked', 'input[type="checkbox"]');
$previousCheckboxes.prop('checked', true);
更新的 jsFiddle
我不完全确定确切的停止条件,所以我只是为了示例的目的选择了"它到达的第一个选中复选框"。在对问题的评论中讨论之后,这个jsFiddle是所需的确切功能。
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 正在验证8个真/假复选框或复选框中的2个
- 为复选框javascript指定两个值
- 如何在单击复选框后调用控制器方法
- 从复选框和Selects-KnockoutJS中获取值的总和
- 选中多个具有相同名称的复选框
- 使用Jquery选择或取消选择ListView中的所有复选框
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 使用$.ajax发布多个复选框
- AngularJS单选筛选不适用于Name、Description和Field4复选框值
- 使用jquery选中/取消选中单个复选框
- Angular JS Filter-通过3个复选框进行筛选
- 如果选中了多个复选框,如何添加事件
- Javascript复选框函数:;缺少:在属性id之后"
- JavaScript-切换“;全部检查”;复选框true/false
- 如何从javascript/jquery中的复选框中获取布尔值
- 选中当前复选框上方的所有复选框(如果按下 shift 键处于选中状态)
- 按住Shift键并单击以选择复选框范围
- 为什么复选框's点击处理程序没有在FF中触发,当它的标签被shift点击时
- Firefox:按下Shift或CTRL时未选中JQuery UI复选框