代码如下:
<s:checkboxlist  name="room.propertyId" label="*设施"  list="proList"  listKey="propertyId" listValue="propertyName" value="#request.propertyId"></s:checkboxlist>我一开始找到一种方法:
if(document.getElementById("room_propertyId") == null){
         $("#errorMessage_Facility").text('请先选择');
         return false;
        }但是问题出现了,不管我选了还是没选,它都是null,所以总是进这个方法.求解决方案

解决方案 »

  1.   

    var propertyId = document.getElementsByName("room_propertyId")
    for(var i = 0 ; i < propertyId.length ; i++){
     if(propertyId[i].checked){
        //已有选中
     }
    }
      

  2.   

    你的id都没有,怎么获取?给他增加一个idvar value = $("#id").val();
      

  3.   


    var propertyId = document.getElementsByName("room_propertyId")[0].getElementsByTagName("input");
    for(var i = 0 ; i < propertyId.length ; i++){
     if(propertyId[i].checked){
      //已有选中
     }
    }
      

  4.   


    是struts2的标签,没有input标签....
      

  5.   

    struts2标签会有多个不同的id,所以或不到,看下源码就知道了。。
      

  6.   

    那你不用struts标签不行啊?非得用啊?此路不通就换条路啊。
      

  7.   

    你换成原生的HTML用JSTL + EL 来遍历不行么。
      

  8.   

    我是一直讨厌 struts1,2的标签的
      

  9.   

    改动太了...以前使用el的,现在顺便用 下struts标签..学习下..
      

  10.   

    问题解决了....直接用getElementsByName()就可以了..大概带入如下: var value = document.getElementsByName('room.propertyId');
    var length = value.length;
    for(var i = 0 ;i<length;i++){
    if(value[i].checked == true){
    return true;
    }
    }谢谢大家的回复。
      

  11.   

    试了下 你的方法我用不了  可能是我哪写错了  下面这个可以
                    var falg = 0; 
    $("input[name='表单名']:checkbox").each(function () { 
    if ($(this).attr("checked")) { 
    falg += 1; 

    }) 
    if (falg > 0) {
    return true ; 
    }else {

    return false;
    }