又一个关于checkbox的问题【原创 | 2006-11-16】以下是HTML代码:【运行代码】【复制代码】 <form name="aform" method="post" onsubmit="return check()">
<input type="checkbox" name="test[]" id="test1" value="aaaaaa" /><label for="test1">aaaaaa</label>
<input type="checkbox" name="test[]" id="test2" value="bbbbbb" /><label for="test2">bbbbbb</label>
<input type="checkbox" name="test[]" id="test3" value="ccccccc" /><label for="test3">ccccccc</label>
<input type="checkbox" name="test[]" id="test4" value="dddddd" /><label for="test4">dddddd</label>
<input type="checkbox" name="test[]" id="test5" value="eeeeee" /><label for="test5">eeeeee</label>
</form> 注意表单名在这里使用的是:aform
在ASP,你可以直接使用Request("test")来取得这一串被选中的checkbox的值,注意这时这些checkbox的name="test",ASP会直接得到aaaaaa,bbbbbb,cccccc,dddddd,eeeeee这一形式的值;
但是在PHP中,如果使用name="test",用$_POST['test']得到的只有第一个checkbox的值aaaaaa,因此我们为了方便取值,将它改装成数组形式:test[],此时,就需要遍历这个数组的元素。
由于在PHP使用遍历方式来取这些checkbox的值:
以下是PHP代码:【复制代码】 $testValue = '';
if(count($_POST['test'])>0) {
for($i=0;$i<count($_POST['test']);$i++) {
$testValue .= $_POST['test'][$i];
if($i+1 < count($_POST['test'])) {
$testValue .= ',';
}
}
} 用javascript怎么来取呢?这样:
以下是Javascript代码:【复制代码】 function getArrayValue(strForm,strElement){
var s = '';
with (strForm){
for (var i = 0; i < elements[strElement].length; i++){
if (elements[strElement][i].checked){
s += elements[strElement][i].value + ',';
}
}
}
return s;
}
//strElement与上述对应的应该就是:test[]
//也就是在check()校验函数中使用这样的方式:getValue(document.form1,'test[]') 当从数据库中取出数据,使checkbox自动选中的时候这样做:
以下是Javascript代码:【复制代码】 function CheckBoxSel(strForm,strElement,strValue){
var strValue = strValue;
with (strForm){
for (var i = 0;i < elements[strElement].length ;i++){
str_Value = strValue.split(",");
for (var j = 0;j < str_Value.length ;j++ ){
if(str_Value[j] == elements[strElement][i].value){
elements[strElement][i].checked = true;
break;
}
}
}
}
}
//同样道理,SelectedElement(document.form1,'test[]','<?=$testValue?>')
欢迎与我探讨。。。


