在这里让我们一起学习,一起提高!
<input type=checkbox name=mm value=a onclick="checkItem(this, 'mmAll')"><br>
<input type=checkbox name=mm value=b onclick="checkItem(this, 'mmAll')"><br>
<input type=checkbox name=mm value=c onclick="checkItem(this, 'mmAll')"><br>
<input type=checkbox name=mm value=d onclick="checkItem(this, 'mmAll')"><br>
<input type=checkbox name=mm value=e onclick="checkItem(this, 'mmAll')"><br><br>
<input type=checkbox name=mmAll onclick="checkAll(this, 'mm')">全选与不全选的切换
<script language=Javascript>
function checkAll(e, itemName)
{
var aa = document.getElementsByName(itemName);
for (var i=0; i<aa.length; i++)
aa[i].checked = e.checked;
}
function checkItem(e, allName)
{
var all = document.getElementsByName(allName)[0];
if(!e.checked) all.checked = false;
else
{
var aa = document.getElementsByName(e.name);
for (var i=0; i<aa.length; i++)
if(!aa[i].checked) return;
all.checked = true;
}
}
</script>
ps:(当然若那个全选框是其它的控件比如是一个按钮,或者一个链接什么的话,那复选框里的 checkItem 点击事件可以去掉,以免出错)
<input type=checkbox name=mm value=b onclick="checkItem(this, 'mmAll')"><br>
<input type=checkbox name=mm value=c onclick="checkItem(this, 'mmAll')"><br>
<input type=checkbox name=mm value=d onclick="checkItem(this, 'mmAll')"><br>
<input type=checkbox name=mm value=e onclick="checkItem(this, 'mmAll')"><br><br>
<input type=checkbox name=mmAll onclick="checkAll(this, 'mm')">全选与不全选的切换
<script language=Javascript>
function checkAll(e, itemName)
{
var aa = document.getElementsByName(itemName);
for (var i=0; i<aa.length; i++)
aa[i].checked = e.checked;
}
function checkItem(e, allName)
{
var all = document.getElementsByName(allName)[0];
if(!e.checked) all.checked = false;
else
{
var aa = document.getElementsByName(e.name);
for (var i=0; i<aa.length; i++)
if(!aa[i].checked) return;
all.checked = true;
}
}
</script>
ps:(当然若那个全选框是其它的控件比如是一个按钮,或者一个链接什么的话,那复选框里的 checkItem 点击事件可以去掉,以免出错)
要获取同名的多个复选项框的值的时候,而且复选框的个数是不确定的,PHP和ASP的处理不同.ASP的REQUEST能将获取的复选框自动形成一个数组,要处理这些数值就很容易.比起ASP,PHP就麻烦些,它并没有这些功能(至少我目前未找到).
所以,处理这个问题的时候,我们可以通过JAVASCRIPT预处理,在点击提交的时候把这些复选框的值附加到一个隐藏域去,然后PHP可以获取到这个隐藏域的值,通过explode()函数分解为数组,这样就可以批量获得复选框的值了.
所以,处理这个问题的时候,我们可以通过JAVASCRIPT预处理,在点击提交的时候把这些复选框的值附加到一个隐藏域去,然后PHP可以获取到这个隐藏域的值,通过explode()函数分解为数组,这样就可以批量获得复选框的值了.
PHP接收多个同名复选框信息不像ASP那样自动转换成为数组,这给使用带来了一定不便。但是还
是有解决办法的,就是利用javascript做一下预处理。多个同名复选框在javascript中还是以数组的
形式存在的,所以在表单提交之前可以利用javascript把复选框中的信息组合成一个字符数组赋值给
表单中的隐藏元素,然后用PHP中的explode函数解析此数组,这样就可以实现复选框信息的传递了。
下面举例说明。
假设有这样一个表单:
是有解决办法的,就是利用javascript做一下预处理。多个同名复选框在javascript中还是以数组的
形式存在的,所以在表单提交之前可以利用javascript把复选框中的信息组合成一个字符数组赋值给
表单中的隐藏元素,然后用PHP中的explode函数解析此数组,这样就可以实现复选框信息的传递了。
下面举例说明。
假设有这样一个表单:
如果一个表单中有多个同名复选框,在提交到php时却只有一个值,而并不像asp那样是一串用逗号分割的值。有一个很简单的方法来解决:将复选框的name后面加上[],例如:<input type="checkbox" name="ccc" value="1"> 改为:<input type="checkbox" name="ccc[]" value="1">。这样php将得到一个叫ccc的阵列。但这种方法有个问题,如果您要在客户端对复选框是否被选择、选择了几个用javascript来判断时,javascript会因为复选框的name中含有[]而出错。您可以在表单中加入一个隐含域,用javascript设置它的值。