近来在做一个项目,其中用到了获取多个同名checkbox的value值,但是过程中遇到了一个问题:在servlet端无法获取未被选中的checkbox的value值。。。。。。郁闷啊、纠结了好久啊~~~~~~
其实,很多时候,我们可以换个思维、换个角度想想,既然checkbox无法通过getParameterValues()方法获取,我们为何不可以在前台页面通过JS将所有的同名checkbox的value值逐个放在一个hidden类型的input框中呢?然后我们便可以在servlet端通过getParameterValues()获取hidden文本框中的所有的值了(这些值就一个个的对应了每个checkbox中的value值啦~~)。不知道这样说明不明白,还是让我们看一个简单的例子吧......
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript">
function setSelect(id) {
var d = document.getElementById(id);
if(!d.checked) {
d.value = "noSelected"
}
//存放各个checkbox的value值
var arg = document.getElementsByName(nba);
for(int i=0; i<arg.length; i++) {
//这里可以根据需求设置ID
document.getElementById("h"+i) = arg[i].value;
}
}
</script>
</head>
<body>
<form action="projectServlet.do?which=aa" method="post">
杜兰特<input type="checkbox" checked="checked" value="Durant" name="nba" id="id0" οnclick="setSelect('du')"/>
科比<input type="checkbox" checked="checked" value="Kobe" name="nba" id="id1" οnclick="setSelect('ko')"/>
<!-- 存放checkbox的value值 -->
<input type="hidden" name="allValue" id="h0"/>
<input type="hidden" name="allValue" id="h1"/>
<input type="submit" />
</form>
</body>
</html>
在后面的servlet通过getParameterValues("allValue")就可以获得所有的checkbox的value值了(包括选了和未选的),不知道到这里是否明白了??