无法让这个工作。第一次使用传递给函数的变量。取消选中单选按钮应禁用表单字段,反之亦然。 lineid变量将此无线电/文本输入对与其他10个区分开来。
我的代码:
<script type="text/javascript">
function disablefield(lineid){
if (document.getElementById(lineid).checked == true){
document.dupedit.lineid.disabled = false;
} else {
document.dupedit.lineid.disabled = true;
}
}
</script>
我的HTML子集。
答案 0 :(得分:2)
您需要将一个字符串传递给disablefield
函数,因此在传入时将值放在引号中。例如:
<input onclick="disablefield('2671997')" />
这是因为document.getElementById
需要一个字符串,而不是一个整数。
其次,要启用/停用该字段,您需要使用disabled = true;
而不是= 'disabled'
。
document.dupedit.lineid
正在查找名称为“lineid”的字段,该字段在您的表单中不存在。我建议给该字段id
并再次使用document.getElementById
。
如果您想继续使用name
属性,则必须使用document.getElementsByName
。这将返回一个匹配元素数组(因为多个元素可以共享相同的名称),但如果在您的代码中您知道所讨论的元素是唯一具有该名称的元素,则可以执行以下操作:
document.getElementsByName(lineid)[0].disabled = true;
你可以看到一个有效的版本(我认为这就是你想要它的方式)here。 here是使用getElementsByName
的版本。
答案 1 :(得分:1)
你缺少关于该功能的右括号:
function disablefield(lineid){
if (document.getElementById(lineid).checked == true){
document.dupedit.lineid='enabled';
}else{
document.dupedit.lineid='disabled';
}
} //<-- here
另外,我可以建议您将this
传递给该函数。然后您不必致电getElementById
<input onclick='disablefield(this)' type.....
function disablefield(obj){
if (obj.checked == true){
document.dupedit.lineid='enabled';
}else{
document.dupedit.lineid='disabled';
}
}
答案 2 :(得分:1)
我认为你需要的是重新思考代码。
请勿在复选框上使用ID。最好将该ID移动到要禁用/启用的文本字段,并检查该字段是否已禁用/启用,而不是复选框本身
使用清洁工JS。
请看一下the jsFiddle,我已经为你编译了。丹,你能做到你想要的吗?