Я использую библиотеку handsontable и очень удивился, когда обнаружил нет обратного вызова onEdit
.
Я попытался создать его, используя сценарий, предоставленный одним пользователем в той же проблеме, но он похоже, это старая версия, и она больше не работает.
Я пытался придумать, как добавить крючок, но документация по нему довольно скудная из-за ручного управления. Кто-нибудь знает, как создать такой обратный вызов для handsontable?
1 ответ
Захвата только двойных щелчков недостаточно, поскольку пользователь может далее войти в режим редактирования с помощью клавиш Enter или F1 .
Одним из решений проблемы отсутствия обратного вызова onEdit
является регистрация специального редактора. Таким образом, он прекрасно вписывается во весь жизненный цикл редактирования-сохранения-выхода (например, клавиша Esc закрывает редактор и теряет все изменения). Вот очень упрощенный редактор, расширяющий встроенный и используемый по умолчанию TextEditor
:
var LoggingEditor = Handsontable.editors.TextEditor.prototype.extend();
LoggingEditor.prototype.getValue = function() {
console.log('User finished editing the cell, the value will be set to: '
+ this.TEXTAREA.value);
return this.TEXTAREA.value;
};
LoggingEditor.prototype.setValue = function(newValue){
console.log('User started editing the cell, value shown in cell is: '
+ newValue);
this.TEXTAREA.value = newValue;
};
Это решение, однако, не является универсальным, поскольку, если используется более одного редактора, его также придется заменить. Однако в простых случаях он должен работать. Полный пример можно найти в этой скрипке.
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.
columns
: jsfiddle.net/fws1vc5e/19 Избавление от него работает должным образом. Любое решение для этого?columns
как еще один атрибут каждого столбца, но он создает другая проблема.