0

我们目前正在使用 Quickbase 中的甘特图功能来突出我们当前开发人员的工作量。我们正在创建具有假期的任务,以便将假期置于同一任务级别。将蓝色条变为紫色是一个非常重要的请求,以便您可以区分两者。目前我们已经创建了一个添加了 HTML 的计算字段,但不能完全让 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 中的图像替换为脚本中的图像。任何帮助都是极好的

感谢

4

1 回答 1

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^=&quot;/i/clear2x2.gif&quot;])').attr('src',('https://images.quickbase.com/si/16/821-check_purple.png'));\">", "")
于 2016-07-14T17:23:27.547 回答