引言:对于多选框(checkbox)和单选框(radio)一直都是见的多用的少。总感觉自己好像对它们有点陌生,怕不会用。前些天用了下,感觉也不是那么复杂,看来任何东西只要真正去动手做了也就没那么复杂了。
单选框:
jsp代码:
<input type="radio" value="${task.id}" name="taskIdTmp" id="taskIdTmp" />
js代码:
function exportTask() {
if($("input[name='taskIdTmp']:checked").length!=1){
alert("请选择导出任务");
return false;
}
var rwid = jQuery("input[type='radio'][name='taskIdTmp']:checked").val();
document.form1.action = "<%=path%>/export/export!executeAction.do?action=exportTask&rwId="+rwid;
document.form1.submit();
}
代码解释:$("input[name='taskIdTmp']:checked").length:判断是否有选择中的radio
jQuery("input[type='radio'][name='taskIdTmp']:checked").val():获得选中的radio的值(我们需要的值)。
rwId="+rwid:将获得的值传到action里面,如何获取就不多说了。
多选框:
jsp代码:
<input type="checkbox" name="taskIds" value="${task.id}" />
js代码:
function toRem(){
if(!isRigthCheck("taskIds")){
alert("请选择一行记录!");
return;
}else{
if(confirm("确定要将状态改为过时吗?")){
pageUrl("<c:url value='taskManage!execute.do?action=toRem'/>");
}else{
return;
}
}
}
function countChecked(checkName){
var selectedCount = 0;
var checks = document.getElementsByTagName("input");
for(i = 0 ; i <= checks.length ; i++ ){
if(checks[i]){
if(checks[i].name == checkName){
if(checks[i].checked)
{
selectedCount++;
}
}
}
}
return selectedCount;
}
function isRigthCheck(checkName){
var selectedCount = countChecked(checkName);
if(selectedCount > 0){
return true;
}else{
return false;
}
}
代码解释:document.getElementsByTagName("input"):得到所有Tag为input的标签。
if(checks[i].name == checkName){if(checks[i].checked){selectedCount++;}}:对所有tag为input的标签进行循环,如果等于checkName,则再判断是否是选中状态,如果是处于选中状态,则将selectedCount加1.
由于这是多选框,那么值有可能就是多个的,所有它就是把选中的值放到一个数组中然后传到服务器的。那么在服务器的取法就是类似:
private String[ ] taskIds;
for(String task:taskIds){
//循环取出值
我们需要的值:task;
}
对于多选框和单选框也不是很熟,如果上面有什么描述错了,还望各位指点,不甚感激!