本帖最后由 CrazyNotes 于 2012-12-05 11:09:57 编辑

解决方案 »

  1.   

    你设置一个全局变量a用于当前剩余的可以投票数,
    然后你的radio监听点击事件,监听click事件,当你的a = 0 的时候你就 disabled所有的没选择的radio,当你的a >0 时就enabled所有的
      

  2.   


    还有个,如果要disabled所有的未选择radio还不行,只能disabled所有未选择radio的“同意”选项,
    因为不能选同意,但可以选不同意,是吧
      

  3.   

    简单写了下测试例子,你自己做相应的业务调整吧
    var totalnumber = 1
            function doclick(el) {
                el.checked == true ? totalnumber-- : 1;
                if (totalnumber == 0) {
                    //disabled 你想要的disabled
                    //el.disabled = true;
                }
            }<input type="radio" name="adf" onclick="doclick(this)" />
      

  4.   

    超过可用得票数再点击同意设置同意对象.checked=false就行了
      

  5.   

    谢谢楼上的朋友,我那个radio有“同意”和“不同意”两个选项,如果超过同意票数了,那么只能屏蔽“同意”项目,“不同意”选项是不能屏蔽的。
      

  6.   


    function vote(obj) {
    var count = 0;
    var inputs = document.getElementsByTagName("input");
    for(var i=0; i<inputs.length; i++) {
    if(inputs[i].type == "radio" && inputs[i].value == "1" && inputs[i].checked) count += 1;
    }

    if(count > 4) {
    document.getElementsByName(obj.name)[1].checked = true;
    }
    }
    <input type="radio" name="t1" onclick="vote(this);" value="1" /> 同意
    <input type="radio" name="t1" value="2" /> 不同意<br /><input type="radio" name="t2" onclick="vote(this);" value="1" /> 同意
    <input type="radio" name="t2" value="2" /> 不同意<br /><input type="radio" name="t3" onclick="vote(this);" value="1" /> 同意
    <input type="radio" name="t3" value="2" /> 不同意<br /><input type="radio" name="t4" onclick="vote(this);" value="1" /> 同意
    <input type="radio" name="t4" value="2" /> 不同意<br /><input type="radio" name="t5" onclick="vote(this);" value="1" /> 同意
    <input type="radio" name="t5" value="2" /> 不同意<br />
      

  7.   

    <div id="tt">还可以投4票</div>
    <input type="radio" name="t1" value="1" /> 同意
    <input type="radio" name="t1" value="2" /> 不同意<br /><input type="radio" name="t2" value="1" /> 同意
    <input type="radio" name="t2" value="2" /> 不同意<br /><input type="radio" name="t3" value="1" /> 同意
    <input type="radio" name="t3" value="2" /> 不同意<br /><input type="radio" name="t4" value="1" /> 同意
    <input type="radio" name="t4" value="2" /> 不同意<br /><input type="radio" name="t5" value="1" /> 同意
    <input type="radio" name="t5" value="2" /> 不同意<br /><script type="text/javascript">
        var inputs=document.getElementsByTagName("input");
        var tt=document.getElementById("tt");
        for(var i=0; i<inputs.length; i++) {
            inputs[i].onclick=vote;
        }
        function vote(obj) {
            var n=4;
            for(var i=0; i<inputs.length; i++) {
                if(inputs[i].type == "radio" && inputs[i].value == "1" && inputs[i].checked) n--;
            }
            if(n<0) {
                if(this.value=="1"){
                    this.checked=false;
                    alert("不能起过4个同意投票!")
                }            
            }else{
                tt.innerHTML="还可以投"+n+"票";
            }
        }
    </script>
      

  8.   

    给radio控件再增加一个属性(以为例说明),当点击“同意”的时候给属性赋值1;“同意”次数等于4的时候将所有值不为1的radio全部设置为checked=false
      

  9.   

    谢谢楼上各位,根据各位的指导,现在基本上搞定了,还有个bug,比如共5个“同意\不同意”radio1-radio5,系统只允许投4票“同意”,如果之前radio5选择的“不同意”,然后改成“同意”之后,直接checked=false了。
    按道理应该是alert提醒之后,回退到刚才选择的状态,也就是“不同意”,不能直接checked=false。不知道以上描述大大们听懂了没有。谢谢以上各位朋友。
      

  10.   

    没看明白  不过考虑当有某项从“同意”改成“不同意”的时候且票数少于4的时候要把之前checked=false的还原回来
    我个人觉得逻辑应该是这样:
    if(当前被选中的radio=="同意")
    {
       修改值为1;
    }
    else
    {
       还原值;
       如果有checked=false则去掉;
    }
    if(票数==4)
    {
       值不等于1的同意radio设为checked=false;
    }
    else if(票数==3)
    {
       如果有值不等于1的同意radio设置了checked=false则去掉checked=false;}
      

  11.   

    其实为什么不设计为当票数=4的时候把其他的radio直接默认选上“不同意”,这样不用设置checked=false
      

  12.   

    票数=5的时候给出提示然后将当前的radio改成选择“不同意”