多个焦点选择器动态显示 QuillJS 工具栏,可能吗?
Multiple focus selectors to dinamically show QuillJS toolbar, is it possible?
我正在使用 Django 的 QuillJS 版本,我想做的是只显示所选文本区域的工具栏。
使用 JS 有点奏效:
const parentDiv = Array.from(document.getElementsByClassName("django-quill-widget-container"));
const toolbar = Array.from(document.getElementsByClassName("ql-toolbar"));
const editor = Array.from(document.getElementsByClassName("ql-editor"));
for (let i = 0; i < editor.length; i++) {
toolbar[i].style.display = "none";
parentDiv[i].style.borderTop = "1px solid #ccc";
editor[i].addEventListener("focusin", function () {
toolbar[i].style.display = "";
parentDiv[i].style.borderTop = "";
});
editor[i].addEventListener("focusout", function () {
toolbar[i].style.display = "none";
parentDiv[i].style.borderTop = "1px solid #ccc";
});
}
问题是单击工具栏以利用其功能也算作焦点离开。
所以是的,它不起作用。
有什么想法吗?
最后我用了一个更简单的方法:
const parentDiv = Array.from(document.getElementsByClassName("django-quill-widget-container"));
const toolbar = Array.from(document.getElementsByClassName("ql-toolbar"));
const editor = Array.from(document.getElementsByClassName("ql-editor"));
function clearToolbar(index) {
toolbar[index].style.display = "none";
parentDiv[index].style.borderTop = "1px solid #ccc";
}
let editorArray = [0,1,2,3,4,5];
for (let i = 0; i < editor.length; i++) {
toolbar[i].style.display = "none";
parentDiv[i].style.borderTop = "1px solid #ccc";
editor[i].addEventListener("focusin", function () {
Array.prototype.except = function(val) {
return this.filter(function(x) { return x !== val; });
};
parentDiv[i].style.borderTop = "";
toolbar[i].style.display = "";
editorArray.except(i).forEach(clearToolbar);
});
}
它过滤包含 TextInputs 索引的数组,不包括所选文本字段的索引,并应用我需要的样式。
没有 focusout 侦听器,工具栏现在可以完美运行。
我正在使用 Django 的 QuillJS 版本,我想做的是只显示所选文本区域的工具栏。 使用 JS 有点奏效:
const parentDiv = Array.from(document.getElementsByClassName("django-quill-widget-container"));
const toolbar = Array.from(document.getElementsByClassName("ql-toolbar"));
const editor = Array.from(document.getElementsByClassName("ql-editor"));
for (let i = 0; i < editor.length; i++) {
toolbar[i].style.display = "none";
parentDiv[i].style.borderTop = "1px solid #ccc";
editor[i].addEventListener("focusin", function () {
toolbar[i].style.display = "";
parentDiv[i].style.borderTop = "";
});
editor[i].addEventListener("focusout", function () {
toolbar[i].style.display = "none";
parentDiv[i].style.borderTop = "1px solid #ccc";
});
}
问题是单击工具栏以利用其功能也算作焦点离开。
所以是的,它不起作用。
有什么想法吗?
最后我用了一个更简单的方法:
const parentDiv = Array.from(document.getElementsByClassName("django-quill-widget-container"));
const toolbar = Array.from(document.getElementsByClassName("ql-toolbar"));
const editor = Array.from(document.getElementsByClassName("ql-editor"));
function clearToolbar(index) {
toolbar[index].style.display = "none";
parentDiv[index].style.borderTop = "1px solid #ccc";
}
let editorArray = [0,1,2,3,4,5];
for (let i = 0; i < editor.length; i++) {
toolbar[i].style.display = "none";
parentDiv[i].style.borderTop = "1px solid #ccc";
editor[i].addEventListener("focusin", function () {
Array.prototype.except = function(val) {
return this.filter(function(x) { return x !== val; });
};
parentDiv[i].style.borderTop = "";
toolbar[i].style.display = "";
editorArray.except(i).forEach(clearToolbar);
});
}
它过滤包含 TextInputs 索引的数组,不包括所选文本字段的索引,并应用我需要的样式。 没有 focusout 侦听器,工具栏现在可以完美运行。