javascript - 制表符中的多选样式
问题描述
我确实在根据本指南创建的制表器中有一个多选标题过滤器:如何在制表器中创建多选标题过滤器?
我迷失了多选输入字段的样式。请您指教,如何将样式更改为 ie selected、select2、bootstrap 或任何其他自定义样式?
我试图将 css 类分配给该列标题,它可以工作,但数据不会动态更改。
在此先感谢您的帮助!
我当前的代码:
<!DOCTYPE html>
<html>
<head>
<title>List of processing items</title>
<meta charset=UTF-8>
<?php include 'header.php';?>
</head>
<body>
<div class="container">
<div id="tabulator"></div>
<script type="text/javascript">
const processingTypeTypes = ['TASK', 'WORKFLOW'];
function multiSelectHeaderFilter(cell) {
var values = processingTypeTypes;
const filterFunc = (rowData) => {
return values.includes(rowData['processingType']);
}
const getSelectedValues = (multiSelect) => {
var result = [];
var options = multiSelect && multiSelect.options;
var opt;
for (var i = 0, iLen = options.length; i < iLen; i++) {
opt = options[i];
if (opt.selected) {
result.push(opt.value || opt.text);
}
}
return result;
}
const onChange = () => {
var editor = document.getElementById('processingTypeSelector');
values = getSelectedValues(editor);
console.log("values: " + values);
cell.getColumn().getTable().removeFilter(filterFunc);
cell.getColumn().getTable().addFilter(filterFunc);
}
var select = document.createElement("select");
select.multiple = "multiple";
select.id = 'processingTypeSelector';
select.class = "chosen-select";
select.style = 'width: 100%';
processingTypeTypes.forEach(processingType => {
select.innerHTML += "<option id='" + processingType + "' value='" + processingType + "' selected='selected'>" + processingType + "</option>";
});
cell.getColumn().getTable().addFilter(filterFunc);
select.addEventListener('change', onChange);
return select;
}
</script>
<script>
var tabledata =
<?php include("include/dummyJson.php"); ?>
;
var table = new Tabulator("#tabulator", {
layout:"fitColumns",
headerSort: true,
tooltips:true,
placeholder:"No Data. Incorrect input, OR empty response.",
data:tabledata,
columns:[
{title:"Type", field: "processingType", sorter: "string", headerFilter: multiSelectHeaderFilter, headerFilterLiveFilter: false},
],
});
</script>
</div>
</body>
</html>
解决方案
如果您设置了列标题的样式,则列表元素的样式不会更改,因为列表元素直接附加到正文元素,并且绝对定位到选择的输入元素下方。这种方法消除了任何否则会出现的容器溢出问题。
如果您希望能够自行设置列表样式,则需要覆盖应用于类的 CSS。(确保在导入 tabulator.css 后添加此 css)
要覆盖列表容器上的任何内容,您需要:
.tabulator-edit-select-list{
border:2px solid #f00; //make list have red border
}
要覆盖列表项上的任何内容,您将需要:
.tabulator-edit-select-list .tabulator-edit-select-list-item{
color:#f00; //make list item have red text
}
要覆盖所选列表项上的任何内容,您需要:
.tabulator-edit-select-list .tabulator-edit-select-list-item.active{
background:#f00; //make list item background red when selected
}
要覆盖焦点列表项上的任何内容,您将需要:
.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{
background:#0f0; //make list item background green when focused
}
推荐阅读
- javascript - Javascript 和 html2canvas.js 部分工作的 Div 屏幕截图
- python-3.x - 关于在数据帧上覆盖逻辑数组
- jquery - 格式化 Etherscan API 结果 ( JsonRpc )
- c# - 管理多个环境的设置?
- jquery - Safari 及其计算屏幕大小的方式
- php - PHP assert() 函数设置未定义为 $matches
- automated-tests - 在单独的网络上安装杜鹃?
- javascript - 如何开玩笑地测试这个正则表达式
- ios - 无法解码 JSON:无法读取数据,因为它的格式不正确
- jquery - Yii2 - beforeSubmit ajax 返回值