我们目前正在使用Quickbase中的甘特图功能来突出显示当前开发人员的工作量。我们正在创建具有休假的任务,以便将假期放在同一任务级别上。有一个很好的要求,使蓝色条紫色,所以你可以区分两者。目前我们已经创建了一个添加了HTML的Calulated字段,但是无法使jquery正常工作。这就是我们目前所拥有的。
If([Task Name]="Vacation","<script type=\"text/javascript\">$(document).ready(function() { $('#timeline img').attr('src',('https://images.quickbase.com/si/16/821-check_purple.png')); });</script>","")
这应该将当前行div中的图像替换为脚本中的图像。任何帮助都很棒
感谢
答案 0 :(得分:0)
看起来有几个问题导致您的代码无效。首先,让我区分Quickbase中的“计算字段”和“公式字段”。计算字段在报表视图中定义(意味着它们只能在该报表中查看而不能在其他内容中查看)并且不允许使用HTML。另一方面,公式字段的创建方式与传统字段类似,允许您选择允许某些HTML的复选框。您需要使用公式字段来获取要在表单或报表中运行的代码。您还需要确保在报告中显示该字段,否则代码将不会被执行。
解决后,您的脚本可能无法运行,因为Quickbase限制了允许的HTML标记。您只需在字段中看到脚本文本,而不是更改图像。您可以将脚本放在onload
元素的IMG
标记中来解决此问题。这将带来额外的效果,不再需要document.ready(function(){});
正确执行。
最后,最后一个问题是选择器。即使您使用附加到特定记录的公式字段,脚本本身也会对整个页面执行。为了仅选择任务名称为“假期”的记录的img
元素,您需要一种区分行的方法。幸运的是,时间线报告将每行包裹在div
中,并为其提供ID“rid”+记录ID。
所以,如果你把它们放在一起,你应该得到一个公式文本字段,其中包含“允许在字段中插入一些HTML标记”,并将其作为公式:
If([Task Name]="Vacation", "<img qbu=\"module\" src=\"/i/clear2x2.gif\" onload=\"javascript:$('#rid" & [Record ID#] & " > td:has(div.timeline) > div.timeline > img').attr('src',('https://images.quickbase.com/si/16/821-check_purple.png'));\">", "")
我在自己的时间表报告中测试了上述公式,并按预期工作。
编辑:
要排除编辑源时Quickbase自动放置的clear2x2.gif图像:
If([Task Name]="Vacation", "<img qbu=\"module\" src=\"/i/clear2x2.gif\" onload=\"javascript:$('#rid" & [Record ID#] & " > td:has(div.timeline) > div.timeline > img:not([src^="/i/clear2x2.gif"])').attr('src',('https://images.quickbase.com/si/16/821-check_purple.png'));\">", "")