在HTML标签或者js生成的页面代码中,有时需要提交多组单选按钮,比如一个页面提交多个人员的基本信息:
姓名:
性别单选:男, 女
年龄:
姓名:
性别单选:男, 女
年龄:
对于“姓名”和“年龄”字段使用文本框可以使用相同的"name"字段,这样在提交在后台处理时可以使用:
String[] aplnames = request.getParameterValues("aplname");
String[] aplage = request.getParameterValues("aplage ");
但是,对于性别,由于'name'属性相同的表示一组内容,如果这里radio的'name'属性都设成一样的,那么两个人员共4个radiobox却只能选一个为checked状态,显然是不行的;只能把一个人员信息性别的两个radiobox设为一组,这两个radio的‘name’设为相同并区别于其他人员的radiobox的‘name’属性。
如下js代码部分实现,每组radio随机定义'name'属性,后台要知道这raidobox的属性名可以有很多方法,强制改名,或者以一定规律命名(因为是动态生成标签,存在随意删除和增加人员的情况,这里是在提交前强制改名了)。
最重要的是html http提交时一组radiobox实际上只是提交了属性checked为选中的radiobox。
前台js:
var $row2 = $('<tr></tr>'); var timestampstr = new Date().getTime(); $row2.append('<td class="lefttitle2">性別</td>'); $row2.append('<td><input type="radio" name="aplgender'+timestampstr+'" checked="checked" value="1" rdflag="gender" />男<input type="radio" name="aplgender'+timestampstr+'" value="0" rdflag="gender" />女<span style="color:red;">※必須</span></td>'); $table1.append($row2);
后台java:
String[] aplnames = request.getParameterValues("aplname");
for (int i = 0; i < appnum; i++) {//人员总数循环
String[] rds = request.getParameterValues("aplgender_"+ i);
log.info("aplgender_"+ i + ", " + Arrays.asList(rds).toString());
String tmp = "[RADIOS] ";
for (int j = 0; j < rds.length; j++) {
tmp += rds[j];
}
log.info(tmp);
}
前台提交了3个人员信息后,后台的 日志显示每个人员的radiobox提交后只是得到了选中的那个,并没有把每组(男、女)的radiobox都提交上来:
- [ INFO ] aplgender_0, [0] - [ INFO ] [RADIOS] 0 - [ INFO ] aplgender_1, [1] - [ INFO ] [RADIOS] 1 - [ INFO ] aplgender_2, [1] - [ INFO ] [RADIOS] 1