Я разрабатываю плагин 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
Программисты Html
1737410902
Anonymous
Я разрабатываю плагин 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}"`);
},
});
});
Подробнее здесь: [url]https://stackoverflow.com/questions/79372769/jquery-plugin-renders-textbox-instead-of-dropdown-in-editable-table[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия