gpt4 book ai didi

html - 使用 Template Toolkit 在不使用多个循环的情况下勾选复选框

转载 作者:可可西里 更新时间:2023-11-01 13:13:13 26 4
gpt4 key购买 nike

我正在使用模板工具包和 perl 生成网页。我有一个数组,其中包含 ID 号,如果该值存在于数组中,则可以打开和关闭复选框。我想知道是否有更有效的方法来在页面加载时打开和关闭一组复选框。有一些以前的代码,在我拿到它之前加载起来感觉很慢。我不想再增加等待时间。

这个有效:

<label for="checkFedGround">
<input type="checkbox" name="Shipping" id="checkFedGround" value="11"
[% FOREACH ShippingID IN data.ShippingID %]
[% IF ShippingID == 11 %] checked="checked"
[% END %]
[% END %]
enabled />
FedEx Ground
</label>

问题是它必须为我的每种运输类型执行 FOREACH 循环。在我看来会有很多不必要的处理。假设数组中有 30 个复选框和 10 个 ID。这意味着 FOREACH 将为每个复选框循环 10 次,只是为了验证单个 ID。

我一直在尝试使用 Template Toolkit::EXIST 和类似的方法来检查 ID 是否在数组中一次,但它没有按照我想要的方式工作。

这不起作用:这会勾选不在范围内的值的复选框。

<input type="checkbox" name="Shipping" id="checkFedGround" value="11" 
[% IF (data.ShippingID(11)) %] checked="checked"
[% END %]
enabled />
FedEx Ground

有谁知道更好的方法吗?

更新/解决方案:感谢您的建议。正如建议的那样,我最终使用散列来存储数据。我还放弃了使用静态复选框的想法,转而使用创建排序列表的选择列表。 JQuery 读取选定行/复选框的值,处理哈希数组并将其传递给 Perl。

<table> ...
<td> <input type="checkbox" name="ShippingID" value="[% service.ShippingID %]"
[% IF service.default %] checked="checked" [% END %]
style="margin: 0px;" />
</td> </table>
....
<select id="ShippingMethodSelect">
<option value="">Add Shipping Method...</option>
[% FOREACH service IN data.Shipping %]
<option value="[% service.ShippingID %]">[% service.description %]</option>
[% END %]
</select>

最佳答案

然后不要使用数组,使用散列。

$data->{ShippingIDs} = { map { $_ => 1 } @ShippingIDs };

然后就可以使用了

<input type="checkbox" name="Shipping" id="checkFedGround" value="11" 
[% IF data.ShippingID.11 %] checked="checked" [% END %]
enabled />
FedEx Ground

关于html - 使用 Template Toolkit 在不使用多个循环的情况下勾选复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16286012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com