我正在尝试从多种形式传递值。
参考:Check all/uncheck all in foreach loop
我已经在SO中查看了一个非常有用的帖子,它允许我使用SELECT ALL复选框发送值进行处理。
我的值是从控制器中的SQL查询生成的,因此我使用下面的代码:
<div class="col" id="one">
<fieldset>
<form action="{$link->getLink('controller')|escape:'htmlall':'utf-8'}" method="post">
<p>
<input name="ALL" type="checkbox" id="check-all2" value="checkbox" onclick="CheckAll()" />
<label>SELECT ALL</label>
<br/><br/>
{foreach from=$payment item=row}
<input type="checkbox" name="payment[]" maxlength="50" value={$row.id_order} class="payment">
<label> ID: <b>{$row.id_order}</b></label><br/>
{/foreach}
<br/>
<input id="submit" name="submitpayment" type="submit" value="PACK ITEMS" class="button" />
</p>
</form>
</fieldset>
</div>
jQuery:
function CheckAll() {
var elements = document.getElementsByName("payment");
var l = elements.length;
if (document.getElementById("check-all2").checked) {
for (var i = 0; i < l; i++) {
elements[i].checked = true;
}
} else {
for (var i = 0; i < l; i++) {
elements[i].checked = false;
}
}
}
目前这对我有用,遗憾的是我不确定如何为多种表单创建。
答案 0 :(得分:1)
试试这个:
function CheckAll(className, elem) {
var elements = document.getElementsByClassName(className);
var l = elements.length;
if (elem.checked) {
for (var i = 0; i < l; i++) {
elements[i].checked = true;
}
} else {
for (var i = 0; i < l; i++) {
elements[i].checked = false;
}
}
}
<label>Select all 1</label>
<input type="checkbox" onclick="CheckAll('box1', this)" />
<h2>check boxes</h2>
<input type="checkbox" class="box1" />
<input type="checkbox" class="box1" />
<input type="checkbox" class="box1" />
<hr>
<label>Select all 2</label>
<input type="checkbox" onclick="CheckAll('box2', this)" />
<h2>check boxes</h2>
<input type="checkbox" class="box2" />
<input type="checkbox" class="box2" />
<input type="checkbox" class="box2" />