Я разрабатываю плагин jQuery для редактируемых HTML-таблиц. В таблице должно быть разрешено встроенное редактирование, а в некоторых столбцах (например, столбец 1 «Позиция») должен отображаться раскрывающийся список для редактирования. Однако вместо раскрывающегося списка отображается текстовое поле.
Что я сделал:
Я реализовал логику, позволяющую проверить, настроен ли столбец для раскрывающегося списка. Если да, он должен отображать элемент с предопределенными параметрами.
Если столбец не настроен для раскрывающегося списка, он отображает текстовое поле для редактирования.
Я также проверил конфигурацию столбца и добавил console.log( ) для устранения проблемы.
Ожидаемое поведение:
Когда я дважды щелкаю ячейку в столбце 1, я ожидаю появления раскрывающегося списка со следующими параметрами:
Разработчик
Дизайнер
Менеджер
Аналитик
Фактическое поведение:
Когда я дважды щелкаю ячейку в столбце 1, вместо раскрывающегося списка отображается текстовое поле. Для других столбцов правильное поведение. Я разрабатываю плагин jQuery для редактируемых HTML-таблиц. В таблице должно быть разрешено встроенное редактирование, а в некоторых столбцах (например, столбец 1 «Позиция») должен отображаться раскрывающийся список для редактирования. Однако вместо раскрывающегося списка отображается текстовое поле.
Что я сделал:
Я реализовал логику, позволяющую проверить, настроен ли столбец для раскрывающегося списка. Если да, он должен отображать элемент с предопределенными параметрами.
Если столбец не настроен для раскрывающегося списка, он отображает текстовое поле для редактирования.
Я также проверил конфигурацию столбца и добавил console.log( ) для устранения проблемы.
Ожидаемое поведение:
Когда я дважды щелкаю ячейку в столбце 1, я ожидаю появления раскрывающегося списка со следующими параметрами:
Developer
Designer
Manager
Analyst
Фактическое поведение:
Когда я дважды щелкаю ячейку в столбце 1, вместо раскрывающегося списка отображается текстовое поле. Для других столбцов правильное поведение (текстовое поле) работает нормально.
Вывод отладки:
Я добавил инструкции console.log() для проверки индекса столбца и конфигурации раскрывающегося списка. Вот результат: ior (текстовое поле) работает нормально.
Вывод отладки:
Я добавил операторы console.log() для проверки индекса столбца и конфигурации раскрывающегося списка. Вот результат:
Selected column index: 1
Dropdown columns value: undefined
Это говорит о том, что плагин неправильно определяет раскрывающуюся конфигурацию для столбца 1.
Мой код:
Код плагина
if (settings.enableEditing) {
$table.on('dblclick', 'td', function() {
const $cell = $(this);
const colIndex = $cell.index(); // Get column index
// 4.1 Skip if the column is not editable
if (settings.editableColumns.length > 0 && !settings.editableColumns.includes(colIndex)) {
return; // Skip if column is not editable
}
// 4.2 Prevent multiple edit fields
if ($cell.find('input, select').length > 0) return;
// 4.3 Save original value
const originalValue = $cell.text().trim();
// Debugging: Check what colIndex is and what dropdownColumns[colIndex] contains
console.log("Selected column index: " + colIndex);
console.log("Dropdown columns value: ", settings.dropdownColumns[colIndex]);
// 4.4 Check if the column has a dropdown
if (settings.dropdownColumns && settings.dropdownColumns[colIndex] && settings.dropdownColumns[colIndex].length > 0) {
// 4.4.1 Create dropdown
const $dropdown = $('').addClass('editable-dropdown');
settings.dropdownColumns[colIndex].forEach((option) => {
const $option = $('')
.val(option)
.text(option)
.prop('selected', option === originalValue); // Set original value as selected
$dropdown.append($option);
});
// 4.4.2 Add Save and Cancel icons
const $saveIcon = $('')
.addClass('editable-save-icon')
.html('✔') // Checkmark icon (✔)
.on('click', function() {
const newValue = $dropdown.val();
$cell.empty().text(newValue); // Update cell value
if (settings.onEditComplete) {
settings.onEditComplete($cell, originalValue, newValue); // Trigger callback
}
});
const $cancelIcon = $('')
.addClass('editable-cancel-icon')
.html('✖') // Cross icon (✖)
.on('click', function() {
$cell.empty().text(originalValue); // Revert to original value
});
// 4.4.3 Append dropdown and icons to the cell
$cell.empty().append($dropdown).append($saveIcon).append($cancelIcon);
} else {
// 4.5 Default text input for non-dropdown columns
const $input = $('')
.attr('type', 'text')
.val(originalValue)
.addClass('editable-input');
// 4.5.1 Add Save and Cancel icons
const $saveIcon = $('')
.addClass('editable-save-icon')
.html('✔') // Checkmark icon (✔)
.on('click', function() {
const newValue = $input.val().trim();
$cell.empty().text(newValue);
if (settings.onEditComplete) {
settings.onEditComplete($cell, originalValue, newValue);
}
});
const $cancelIcon = $('')
.addClass('editable-cancel-icon')
.html('✖') // Cross icon (✖)
.on('click', function() {
$cell.empty().text(originalValue);
});
// 4.5.2 Append input and icons to the cell
$cell.empty().append($input).append($saveIcon).append($cancelIcon);
// 4.5.3 Focus input field
$input.focus();
}
});
}
$(document).ready(function () {
$('#example').editableTable({
enableEditing: true,
editableColumns: [1, 2],
dropdownColumns: {
1: ['Developer', 'Designer', 'Manager', 'Analyst'],
},
onEditComplete: function ($cell, originalValue, newValue) {
console.log(`Updated from "${originalValue}" to "${newValue}"`);
},
});
});
Подробнее здесь: https://stackoverflow.com/questions/793 ... able-table
Плагин jQuery отображает текстовое поле вместо раскрывающегося списка в редактируемой таблице. ⇐ Html
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему в моей редактируемой таблице отображается текстовое поле, а не раскрывающийся список?
Anonymous » » в форуме Html - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-