javascript - 无法将 datetimepicker 添加到 Tabulator 列
问题描述
我想为我的 Tabulator 表创建自定义编辑器。我需要编辑日期值并想使用 jQuery DateTimePicker。
我试图从 Tabulator 网站编辑示例代码,但它不适合我。我的自定义编辑器代码如下所示:
var dateEditor = function (cell, onRendered, success, cancel, editorParams) {
var editor = document.createElement("input");
editor.setAttribute("type", "text");
editor.value = cell.getValue();
onRendered(function(){
jQuery(editor).datetimepicker({
format: "dd.mm.yyyy HH:mm",
});
editor.focus();
});
function onChange(e){
success(editor.value);
}
editor.addEventListener("change", onChange);
editor.addEventListener("blur", onChange);
return editor;
};
和列定义:
{title:"Date", field:"date", align:"left", headerFilter: "input", editor: dateEditor, headerFilterPlaceholder:" "},
Datepicker 组件出现,但是当我尝试更改值时,出现以下消息:
“此日期选择器的未捕获的缺失实例数据”
谢谢你的帮助。
编辑#1:发现日期格式存在问题,但主要问题仍然存在。
解决方案
我能够重现该问题。问题是您不应该使用文本框的onChange
oronBlur
事件。相反,您想使用日期选择器事件
var dateEditor = function(cell, onRendered, success, cancel, editorParams){
var cellValue = cell.getValue(),
input = document.createElement("input");
input.setAttribute("type", "text");
input.style.padding = "4px";
input.style.width = "100%";
input.style.boxSizing = "border-box";
input.value = typeof cellValue !== "undefined" ? cellValue : "";
onRendered(function(){
input.style.height = "100%";
$(input).datepicker({
onClose: onChange
}); //turn input into datepicker
input.focus();
});
function onChange(e){
if(((cellValue === null || typeof cellValue === "undefined") && input.value !== "") || input.value != cellValue){
success(input.value);
}else{
cancel();
}
}
return input;
}
推荐阅读
- c# - 二叉搜索树删除功能
- java - 在 Golang 中初始化一个新类(将 Java 转换为 Golang)
- mysql - 不同疾病按同一ID分组
- c++ - 在不影响重力的情况下阻尼弹簧
- python - 如何在画布 Tkinter 上刷新文本
- sapui5 - 每次打开视图时都不会调用“onBeforeRendering”或“onAfterRendering”
- javascript - 在 innerHTML 中调用函数
- azure - 如何将附加模板中的 loadBalancingRules、侦听器和概率关联到 Azure 云上的现有负载均衡器?
- django - 获取模型中 M2M 字段的所有可能值
- python-2.7 - python socket客户端不发送任何东西