DataTables javaScript: отметьте несколько строк и нажмите «Ввод» Flis Stode of Fackbox вместо проверки/рассеяния всехJavascript

Форум по Javascript
Ответить
Anonymous
 DataTables javaScript: отметьте несколько строк и нажмите «Ввод» Flis Stode of Fackbox вместо проверки/рассеяния всех

Сообщение Anonymous »

Как следует из названия, мне нужна помощь с моим джавазипт -данных. У меня есть некоторая существующая логика для обработки «ввода» нажатия, когда отмечается несколько строк. Когда я нажимаю Enter, я хочу эту логику: < /p>
Если все строки не выполнены: Проверьте все строки
, если все строки проверены: Снимите все строки
, если бы по крайней мере один ряд проверяется: проверьте все ряды < /p>
js не мой самый сильный, и я пробовал множество моделей A Поэтому, пожалуйста, отправьте мой звонок и помогите мне разрешить это. ///enter
if (charCode == 13) {

var inputTryOne = $(e.target).find("input[type='checkbox']");
var inputTryTwo = $(e.currentTarget).find("input[type='checkbox']");
var input = inputTryOne[0] ?? inputTryTwo[0];
if (input != undefined) {

input = $(input);
var td = input.closest("td");
td.closest("tr").toggleClass("selected");
input.prop("checked", !input.prop("checked"));
input.trigger("change");

this.parent.lykoGridKeyboardNavigation.moveDown(false, false);

return;
}

this.commitEditedCells();
this.parent.lykoGridKeyboardNavigation.moveDown(false, false);

return;
}
< /code>
Следующий код - это ответ от AI, который был закрыто на успех, но он не устанавливает правильное состояние строки, он проверяет /снимает флажок, но не запускает событие, поэтому строка «фактически выбирается» и включена в расчеты /получает зеленый цвет строки. < /p>
if (charCode == 13) {
var inputTryOne = $(e.target).find("input[type='checkbox']");
var inputTryTwo = $(e.currentTarget).find("input[type='checkbox']");
var input = inputTryOne[0] ?? inputTryTwo[0];

if (input != undefined) {
// We're dealing with checkboxes

// Check if we have multiple cells selected
if (this.parent.selectedCells && this.parent.selectedCells.length > 1) {
console.log("Multiple cells selected:", this.parent.selectedCells.length);

// Find all unique rows and their checkboxes
var rows = [];
var checkboxes = [];
var checkedCount = 0;
var totalCount = 0;

// Use a map to track unique rows by ID to ensure uniqueness
var processedRows = {};

// First gather info about all selected rows
for (var i = 0; i < this.parent.selectedCells.length; i++) {
var cell = this.parent.selectedCells;
var row = $(cell).closest('tr')[0];

if (row) {
// Use the row's DOM element as a unique identifier
var rowId = row.id || i; // Use index as fallback if no ID

if (!processedRows[rowId]) {
processedRows[rowId] = true;

// Find the checkbox directly from the row
var checkbox = $(row).find('input[type="checkbox"]')[0];
if (checkbox) {
rows.push(row);
checkboxes.push(checkbox);
totalCount++;

// Check its current state
if (checkbox.checked) {
checkedCount++;
}
}
}
}
}

console.log("Found rows:", rows.length, "Total checkboxes:", totalCount, "Checked:", checkedCount);

// Determine what action to take
var setToChecked;
if (checkedCount === totalCount && totalCount > 0) {
// If ALL are checked, uncheck all
console.log("All are checked, unchecking all");
setToChecked = false;
} else {
// If ANY are checked or NONE are checked, check all
console.log("Not all are checked, checking all");
setToChecked = true;
}

// Update all checkboxes in one go
for (var j = 0; j < rows.length; j++) {
// Get the checkbox directly to ensure we're working with the actual element
var checkbox = checkboxes[j];
var row = rows[j];

console.log("Setting checkbox for row", j, "to", setToChecked);

// Set the checked state
checkbox.checked = setToChecked;

// Update row class based on the new state
if (setToChecked) {
$(row).addClass("selected");
} else {
$(row).removeClass("selected");
}
}

return;
}

// Single row case - keep the original behavior
input = $(input);
var td = input.closest("td");
td.closest("tr").toggleClass("selected");
input.prop("checked", !input.prop("checked"));
input.trigger("change");

this.parent.lykoGridKeyboardNavigation.moveDown(false, false);
return;
}

this.commitEditedCells();
this.parent.lykoGridKeyboardNavigation.moveDown(false, false);
return;
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... e-of-check
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»