读书人

请问一个js操作radio按钮的有关问题!

发布时间: 2013-01-04 10:04:13 作者: rapoo

请教一个js操作radio按钮的问题!当达到某个值的时候,就不允许再选择“同意”了
本帖最后由 CrazyNotes 于 2012-12-05 11:09:57 编辑 如题,最近做个表决投票的应用,假设总共有10条记录,只允许投4票,当评委投票超过4票,就不允许在选择“同意”了,也就是页面中的radio的“同意”项目不能超过4项,这个怎么实现。

用遍历的方法倒是可以提醒评委已经超过4票了,但是不能避免他点击“同意”radio啊,我点击事件是触发了一个ajax的,有方法能让评委不能点击吗?

以下是应用的截图,看着可能更直观一点

[解决办法]
你设置一个全局变量a用于当前剩余的可以投票数,
然后你的radio监听点击事件,监听click事件,当你的a = 0 的时候你就 disabled所有的没选择的radio,当你的a >0 时就enabled所有的
[解决办法]
简单写了下测试例子,你自己做相应的业务调整吧


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)" />

[解决办法]
超过可用得票数再点击同意设置同意对象.checked=false就行了
[解决办法]

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 />


[解决办法]
<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>


[解决办法]
给radio控件再增加一个属性(以mark为例说明),当点击“同意”的时候给mark属性赋值1;“同意”次数等于4的时候将所有mark值不为1的radio全部设置为checked=false
[解决办法]
没看明白 不过考虑当有某项从“同意”改成“不同意”的时候且票数少于4的时候要把之前checked=false的还原回来
我个人觉得逻辑应该是这样:
if(当前被选中的radio=="同意")
{
修改mark值为1;
}
else
{
还原mark值;
如果有checked=false则去掉;
}
if(票数==4)
{
mark值不等于1的同意radio设为checked=false;
}
else if(票数==3)
{
如果有mark值不等于1的同意radio设置了checked=false则去掉checked=false;

}
[解决办法]
票数=5的时候给出提示然后将当前的radio改成选择“不同意”

读书人网 >JavaScript

热点推荐