템플릿 툴킷과 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가 단일 ID의 유효성을 검사하기 위해 각 확인란마다 10 번 반복됩니다.
나는 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>
(이 숫자이기 때문에 구문에 대한 확실하지. 당신은 약간 다른 템플릿 코드를 사용해야 할 수도 있습니다,하지만 아이디어는 보유하고 있습니다.) – ikegami
나는 해시를 사용하여 끝났다. 또한 체크 박스의 정렬 된 목록을 만든 선택 목록에 대한 정적 체크 상자 아이디어를 없앴습니다. – Vongrats