2012-07-19 54 views
0

我试图给一些复选框分配一个函数,但我只希望它们根据条件添加,在这种情况下是表单的步骤号。这是一个迂回的方式,使复选框只读后,他们已被选中(或不)。因此,在第1步中,我希望用户选择cb1或cb2,但在第2步中,我想分配不会更改复选框值的函数。需要运行基于条件的函数

我在做什么错?

function functionOne() { 
    this.checked = !this.checked 
}; 
if (document.getElementById("stepNumber").value == 2) { 
    document.getElementById("cb1").setAttribute("onkeydown", "functionOne(this)"); 
    document.getElementById("cb2").setAttribute("onkeydown", "functionOne(this)"); 
} 
+0

什么类型的元素是STEPNUMBER? – 2012-07-19 19:32:34

回答

0

您传递元素中的参数,所以使用:

function functionOne(elem) { 
    elem.checked = !elem.checked 
}; 

您还可以使用属性:

document.getElementById("cb1").onkeydown = functionOne; 
document.getElementById("cb2").onkeydown = functionOne; 

function functionOne() { 
    this.checked = !this.checked 
}; 
0

为什么不选择禁用复选框?

Function onCheck(elm) 
{ 
    document.getElementById("cbValue").value = elm.value; 
    elm.disabled = true; 
} 


<input id="cbValue" type="hidden" /> 

使用隐藏的输入字段允许表单将数据发送回服务器。

+0

我无法禁用复选框,因为它们的值不会发布到表单中。我需要能够实际选中复选框,提交表单,然后在后续步骤中设置该复选框,以便该值不能更改,但不能被禁用。 – user1492035 2012-07-20 12:23:29

+0

我明白了。有时当我遇到这个问题时,我使用隐藏的输入元素来处理这个问题。看到我上面的更新。 – ExceptionLimeCat 2012-07-20 13:20:16