Я нашел решение выбрать один диапазон флажков в таблице, созданной JsGrid.
$(document).on('click', '[type = checkbox]' , function(e) {
if (e.shiftKey) {
var first = $("#jsGrid input[type='checkbox']:checked").first().parent().parent().index(),
last = $("#jsGrid input[type='checkbox']:checked").last().parent().parent().index();
for (var i = first; i < last; i++) {
$("#jsGrid").find("tbody tr index").eq(i).children().first().find("input[type='checkbox']").prop("checked", true);
$("#jsGrid .jsgrid-grid-body tbody tr").eq(i).find("input[type='checkbox']").prop("checked", true)
}
}
});
Проблема этого решения заключается в том, что он допускает использование только одного диапазона флажков.
Чтобы добавить несколько диапазонов, я могу установить нижнюю часть диапазона для текущего индекса строки с помощью
last = $(this).parent().parent().index();
Теперь я хотел бы найти индекс строки со следующей строкой выше, у которой установлен флажок.
Я думаю, это должен быть вариант кода ниже.
first = $(this).prevUntil(':checkbox', 'checked').parent().parent().index(); // -1
Я не могу заставить это работать.
Или это
first = $(this).parent().parent().prevUntil(':checkbox', 'checked').index(); // -1
HTML
<tbody>
<tr class="jsgrid-row">
<td>1</td>
<td><input type="checkbox" rel="898"></td>
<td>02/27/2019</td>
<td>19122-37</td>
<td>SMITH</td>
</tr>
<tr class="jsgrid-alt-row">
<td>1</td>
<td><input type="checkbox" rel="898"></td>
<td>02/27/2019</td>
<td>19122-37</td>
<td>SMITH</td>
</tr>
<tr class="jsgrid-row">
<td>1</td>
<td><input type="checkbox" rel="898"></td>
<td>02/27/2019</td>
<td>19122-37</td>
<td>SMITH</td>
</tr>
<tr class="jsgrid-alt-row">
<td>1</td>
<td><input type="checkbox" rel="898"></td>
<td>02/27/2019</td>
<td>19122-37</td>
<td>SMITH</td>
</tr>
</tbody>
Спасибо!
![shift select](https://i.stack.imgur.com/5ocj1.png)