Tabulator(JS)日期编辑器:如何将max值替换为相邻行单元格日期?
实现Tabulator日期选择器max值关联相邻行/列单元格日期
要把Tabulator日期选择器的max值设置为相邻行(或同一行相邻列)单元格的日期,核心是利用editorParams支持动态函数参数的特性,通过单元格对象获取目标行/列的日期值。
一、关联相邻行的日期(以上一行为例)
将editorParams中的max从固定字符串改为函数,通过函数获取上一行的目标字段日期,作为当前选择器的最大值:
{ title: "示例日期", field: "example", editor: "date", editorParams: { min: "01/01/2020", // 动态计算max:取上一行adjacentDate字段的日期 max: function(cell) { // 获取当前行的上一行对象 const prevRow = cell.getRow().getPrevRow(); // 有上一行则取对应字段值,无则用默认最大值 return prevRow ? prevRow.getCell("adjacentDate").getValue() : "02/12/2022"; }, format: "dd/MM/yyyy", elementAttributes: { title: "滑动选择日期" } } }
关键说明:
- 若要关联下一行,把
getPrevRow()替换为getNextRow()即可。 - 必须保证相邻行目标字段的日期格式,和当前editor的
format完全一致(比如都是dd/MM/yyyy),否则日期选择器无法识别。 - 处理边界场景:第一行没有上一行、最后一行没有下一行时,返回默认值避免报错。
二、关联同一行的相邻列日期
如果需要用同一行中其他列的日期作为max值,直接从当前行数据中提取即可:
{ title: "示例日期", field: "example", editor: "date", editorParams: { min: "01/01/2020", // 取当前行sameRowAdjacentDate字段的日期作为max max: function(cell) { const rowData = cell.getRow().getData(); return rowData.sameRowAdjacentDate || "02/12/2022"; }, format: "dd/MM/yyyy", elementAttributes: { title: "滑动选择日期" } } }
内容的提问来源于stack exchange,提问作者user513782
相关产品推荐
相关产品推荐

