判断动态复选框是否被选中?

itzgs 2014-05-12 05:22:08
代码如下:
<%
for(int i=0;i<list.size();i++){
Letter letter = (Letter)list.get(i);
%>
<tr>
<td><input type="checkbox" name="chkSon" value="<%=letter.getId()%>"/></td>
<td><%=letter.getLetterTitle()%></td>
<td><%=letter.getMailTypeName()%></td>
<td><%=letter.getSender()%></td>
<td><%=letter.getDealName()%></td>
</tr>
<%}%>

function isselected() { 
var ids = document.getElementsByName("chkSon");
for (i = 0; i < ids.length; i++) {
if (ids[i].checked) {
alert(ids[i].checked + " i:" + ids[i].value);
return true;
}
alert("请选择内容,再操作!");
return false;
}
}

运行结果如下 (只截了一部分图)


现在问题是 我选择列表的第一个复选框能弹出if里面的alert,而选其它的复选框都是弹出“请选择内容,在操作!”意思就是选中了没获取到值,所以请给位帮忙看下如何解决这个问题,先谢谢了!
...全文
360 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
巴山虎 2014-05-13
  • 打赏
  • 举报
回复
这个用foreach 更简洁,效率更高。
ddwren 2014-05-13
  • 打赏
  • 举报
回复
引用 楼主 u011765218 的回复:
代码如下:
<%
for(int i=0;i<list.size();i++){
    Letter letter = (Letter)list.get(i);
%>
<tr>
  <td><input type="checkbox" name="chkSon" value="<%=letter.getId()%>"/></td>
  <td><%=letter.getLetterTitle()%></td>
  <td><%=letter.getMailTypeName()%></td>
  <td><%=letter.getSender()%></td>
  <td><%=letter.getDealName()%></td>
</tr>
<%}%>
function isselected() { 
              var ids = document.getElementsByName("chkSon"); 
              for (i = 0; i < ids.length; i++) {
                  if (ids[i].checked) {
                      alert(ids[i].checked + " i:" + ids[i].value);
                      return true;
                  }
                  alert("请选择内容,再操作!");
                  return false;
              } 
          }
运行结果如下 (只截了一部分图) 现在问题是 我选择列表的第一个复选框能弹出if里面的alert,而选其它的复选框都是弹出“请选择内容,在操作!”意思就是选中了没获取到值,所以请给位帮忙看下如何解决这个问题,先谢谢了!
不知道楼主到底要实现什么啊 你跑出来的效果跟你代码的逻辑是一样的啊 document.getElementsByName("chkSon");获取到得是你所有的checkbox,你点第一个的时候是因为return true,所以才只弹了一次alert,你直接选择第二个的时候,是因为你第一个的未选中所以才会报下面的,然后你继续return false,所以只弹了一个下面的alert,说说你要实现什么效果吧 我给你写
itzgs 2014-05-13
  • 打赏
  • 举报
回复
引用 18 楼 a274295732 的回复:
[quote=引用 16 楼 u011765218 的回复:] [quote=引用 15 楼 a274295732 的回复:] [quote=引用 13 楼 u011765218 的回复:] [quote=引用 10 楼 a274295732 的回复:] 楼主不考虑选中多个的情况吗..
考虑的啊 [/quote] 你的for循环里只要有return,遇到选中多个的情况肯定不行[/quote] o哦,那你有什么好方法没!还请不吝赐教! [/quote] 看5L [/quote] 嗯,你说的对,谢谢。
itzgs 2014-05-13
  • 打赏
  • 举报
回复
引用 5 楼 a274295732 的回复:
[quote=引用 3 楼 u011765218 的回复:] [quote=引用 1 楼 a274295732 的回复:]
function isselected() { 
	var ids = document.getElementsByName("chkSon"), selected=false; 
	for (i = 0; i < ids.length; i++) {
		if (ids[i].checked) {
			alert(ids[i].checked + " i:" + ids[i].value);
			selected = true
		}
	} 
	if(!selected){
		alert("请选择内容,再操作!")
	}
}
感谢回答,不过这和我写的没什么区别呀 只是多了个变量,然后就是把我的返回值给这个变量而已。运行结果还是一样。[/quote] 你的for循环里执行第一次判断后就返回结果,所以实际上for循环只执行了一次。 [/quote] 嗯,谢谢,刚刚试了你这个可以。 非常感谢各位的回答!
Cocl 2014-05-13
  • 打赏
  • 举报
回复
引用 16 楼 u011765218 的回复:
[quote=引用 15 楼 a274295732 的回复:] [quote=引用 13 楼 u011765218 的回复:] [quote=引用 10 楼 a274295732 的回复:] 楼主不考虑选中多个的情况吗..
考虑的啊 [/quote] 你的for循环里只要有return,遇到选中多个的情况肯定不行[/quote] o哦,那你有什么好方法没!还请不吝赐教! [/quote] 看5L
xuzuning 2014-05-13
  • 打赏
  • 举报
回复
function isselected() { 
  var ids = document.getElementsByName("chkSon"); 
  for (i = 0; i < ids.length; i++) {
    if (ids[i].checked) {
      alert(ids[i].checked + " i:" + ids[i].value);
      return true;
    }
  }
  alert("请选择内容,再操作!");
  return false;
}
itzgs 2014-05-13
  • 打赏
  • 举报
回复
引用 15 楼 a274295732 的回复:
[quote=引用 13 楼 u011765218 的回复:] [quote=引用 10 楼 a274295732 的回复:] 楼主不考虑选中多个的情况吗..
考虑的啊 [/quote] 你的for循环里只要有return,遇到选中多个的情况肯定不行[/quote] o哦,那你有什么好方法没!还请不吝赐教!
Cocl 2014-05-13
  • 打赏
  • 举报
回复
引用 13 楼 u011765218 的回复:
[quote=引用 10 楼 a274295732 的回复:] 楼主不考虑选中多个的情况吗..
考虑的啊 [/quote] 你的for循环里只要有return,遇到选中多个的情况肯定不行
  • 打赏
  • 举报
回复
引用 11 楼 u011765218 的回复:
[quote=引用 8 楼 showbo 的回复:]
<table>
<tr>
  <td><input type="checkbox" name="chkSon" value="<%=letter.getId()%>"/></td>
  <td><%=letter.getLetterTitle()%></td>
  <td><%=letter.getMailTypeName()%></td>
  <td><%=letter.getSender()%></td>
  <td><%=letter.getDealName()%></td>
</tr>
<tr>
  <td><input type="checkbox" name="chkSon" value="<%=letter.getId()%>"/></td>
  <td><%=letter.getLetterTitle()%></td>
  <td><%=letter.getMailTypeName()%></td>
  <td><%=letter.getSender()%></td>
  <td><%=letter.getDealName()%></td>
</tr>
<tr>
  <td><input type="checkbox" name="chkSon" value="<%=letter.getId()%>"/></td>
  <td><%=letter.getLetterTitle()%></td>
  <td><%=letter.getMailTypeName()%></td>
  <td><%=letter.getSender()%></td>
  <td><%=letter.getDealName()%></td>
</tr>
</table>
<input type="button" onclick="isselected()" value="删除" />
<script>
    function isselected() {
        var ids = document.getElementsByName("chkSon");
        for (i = 0; i < ids.length; i++) {
            if (ids[i].checked) {
                alert(ids[i].checked + " i:" + ids[i].value);
                return true;
            }
        }
        alert("请选择内容,再操作!");
        return false;
    }
</script>
没有问题啊。。勾选就不会执行 alert("请选择内容,再操作!");
我那个是遍历list 复选框是循环出来的,你这是直接写在页面上,逻辑有一点点的不同。[/quote] 一样的,最后生成的就是类似的html代码
itzgs 2014-05-12
  • 打赏
  • 举报
回复
引用 10 楼 a274295732 的回复:
楼主不考虑选中多个的情况吗..
考虑的啊
itzgs 2014-05-12
  • 打赏
  • 举报
回复
引用 9 楼 Return_false 的回复:
也许你要实现如下的 效果,貌似你的逻辑有点问题
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
window.onload=function(){
	var oBtn=document.getElementById('detech');
	oBtn.onclick=function()
	{
		if(isselected())
		{
			alert('有选择项');
		}
		else
		{
			alert('请选择至少一项!');
		}
		
		
	}
}
function isselected() { 
              var ids = document.getElementsByName("chkSon"); 
              for (var i = 0; i < ids.length; i++) {
                  if (ids[i].checked) {
                      return true;
                  }
                  
              } 
			  return false;
			  
          }
		  

</script>
</head>

<body>

<input type="checkbox" name="chkSon" value="1"/>
<input type="checkbox" name="chkSon" value="2"/>
<input type="checkbox" name="chkSon" value="3"/>
<input type="checkbox" name="chkSon" value="4"/>
<p>
	<input type="button" value="检测"  id="detech"/>
</p>
</body>
</html>
嗯,我那个重点是遍历list,复选框是循环出来. 你试试循环一个list!
itzgs 2014-05-12
  • 打赏
  • 举报
回复
引用 8 楼 showbo 的回复:
<table>
<tr>
  <td><input type="checkbox" name="chkSon" value="<%=letter.getId()%>"/></td>
  <td><%=letter.getLetterTitle()%></td>
  <td><%=letter.getMailTypeName()%></td>
  <td><%=letter.getSender()%></td>
  <td><%=letter.getDealName()%></td>
</tr>
<tr>
  <td><input type="checkbox" name="chkSon" value="<%=letter.getId()%>"/></td>
  <td><%=letter.getLetterTitle()%></td>
  <td><%=letter.getMailTypeName()%></td>
  <td><%=letter.getSender()%></td>
  <td><%=letter.getDealName()%></td>
</tr>
<tr>
  <td><input type="checkbox" name="chkSon" value="<%=letter.getId()%>"/></td>
  <td><%=letter.getLetterTitle()%></td>
  <td><%=letter.getMailTypeName()%></td>
  <td><%=letter.getSender()%></td>
  <td><%=letter.getDealName()%></td>
</tr>
</table>
<input type="button" onclick="isselected()" value="删除" />
<script>
    function isselected() {
        var ids = document.getElementsByName("chkSon");
        for (i = 0; i < ids.length; i++) {
            if (ids[i].checked) {
                alert(ids[i].checked + " i:" + ids[i].value);
                return true;
            }
        }
        alert("请选择内容,再操作!");
        return false;
    }
</script>
没有问题啊。。勾选就不会执行 alert("请选择内容,再操作!");
我那个是遍历list 复选框是循环出来的,你这是直接写在页面上,逻辑有一点点的不同。
Cocl 2014-05-12
  • 打赏
  • 举报
回复
楼主不考虑选中多个的情况吗..
  • 打赏
  • 举报
回复
也许你要实现如下的 效果,貌似你的逻辑有点问题
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
window.onload=function(){
	var oBtn=document.getElementById('detech');
	oBtn.onclick=function()
	{
		if(isselected())
		{
			alert('有选择项');
		}
		else
		{
			alert('请选择至少一项!');
		}
		
		
	}
}
function isselected() { 
              var ids = document.getElementsByName("chkSon"); 
              for (var i = 0; i < ids.length; i++) {
                  if (ids[i].checked) {
                      return true;
                  }
                  
              } 
			  return false;
			  
          }
		  

</script>
</head>

<body>

<input type="checkbox" name="chkSon" value="1"/>
<input type="checkbox" name="chkSon" value="2"/>
<input type="checkbox" name="chkSon" value="3"/>
<input type="checkbox" name="chkSon" value="4"/>
<p>
	<input type="button" value="检测"  id="detech"/>
</p>
</body>
</html>
  • 打赏
  • 举报
回复
<table>
<tr>
  <td><input type="checkbox" name="chkSon" value="<%=letter.getId()%>"/></td>
  <td><%=letter.getLetterTitle()%></td>
  <td><%=letter.getMailTypeName()%></td>
  <td><%=letter.getSender()%></td>
  <td><%=letter.getDealName()%></td>
</tr>
<tr>
  <td><input type="checkbox" name="chkSon" value="<%=letter.getId()%>"/></td>
  <td><%=letter.getLetterTitle()%></td>
  <td><%=letter.getMailTypeName()%></td>
  <td><%=letter.getSender()%></td>
  <td><%=letter.getDealName()%></td>
</tr>
<tr>
  <td><input type="checkbox" name="chkSon" value="<%=letter.getId()%>"/></td>
  <td><%=letter.getLetterTitle()%></td>
  <td><%=letter.getMailTypeName()%></td>
  <td><%=letter.getSender()%></td>
  <td><%=letter.getDealName()%></td>
</tr>
</table>
<input type="button" onclick="isselected()" value="删除" />
<script>
    function isselected() {
        var ids = document.getElementsByName("chkSon");
        for (i = 0; i < ids.length; i++) {
            if (ids[i].checked) {
                alert(ids[i].checked + " i:" + ids[i].value);
                return true;
            }
        }
        alert("请选择内容,再操作!");
        return false;
    }
</script>
没有问题啊。。勾选就不会执行 alert("请选择内容,再操作!");
itzgs 2014-05-12
  • 打赏
  • 举报
回复
引用 4 楼 showbo 的回复:
function isselected() { var ids = document.getElementsByName("chkSon"); for (i = 0; i < ids.length; i++) { if (ids[i].checked) { alert(ids[i].checked + " i:" + ids[i].value); return true; } } alert("请选择内容,再操作!"); return false; } 放错位置了吧??
额, 还真是,谢谢 ,不过还是一样的结果。
itzgs 2014-05-12
  • 打赏
  • 举报
回复
引用 2 楼 Return_false 的回复:
也许循环变量是局部的,而不是全局 for (var i = 0;
你这样写也可以,都一样。
Cocl 2014-05-12
  • 打赏
  • 举报
回复
引用 3 楼 u011765218 的回复:
[quote=引用 1 楼 a274295732 的回复:]
function isselected() { 
	var ids = document.getElementsByName("chkSon"), selected=false; 
	for (i = 0; i < ids.length; i++) {
		if (ids[i].checked) {
			alert(ids[i].checked + " i:" + ids[i].value);
			selected = true
		}
	} 
	if(!selected){
		alert("请选择内容,再操作!")
	}
}
感谢回答,不过这和我写的没什么区别呀 只是多了个变量,然后就是把我的返回值给这个变量而已。运行结果还是一样。[/quote] 你的for循环里执行第一次判断后就返回结果,所以实际上for循环只执行了一次。
  • 打赏
  • 举报
回复
function isselected() { var ids = document.getElementsByName("chkSon"); for (i = 0; i < ids.length; i++) { if (ids[i].checked) { alert(ids[i].checked + " i:" + ids[i].value); return true; } } alert("请选择内容,再操作!"); return false; } 放错位置了吧??
itzgs 2014-05-12
  • 打赏
  • 举报
回复
引用 1 楼 a274295732 的回复:
function isselected() { 
	var ids = document.getElementsByName("chkSon"), selected=false; 
	for (i = 0; i < ids.length; i++) {
		if (ids[i].checked) {
			alert(ids[i].checked + " i:" + ids[i].value);
			selected = true
		}
	} 
	if(!selected){
		alert("请选择内容,再操作!")
	}
}
感谢回答,不过这和我写的没什么区别呀 只是多了个变量,然后就是把我的返回值给这个变量而已。运行结果还是一样。
加载更多回复(2)

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧