如何在单选按钮交互上启用/禁用文本字段?

时间:2011-07-12 08:25:04

标签: javascript forms dom

无法让这个工作。第一次使用传递给函数的变量。取消选中单选按钮应禁用表单字段,反之亦然。 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子集。

3 个答案:

答案 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;

你可以看到一个有效的版本(我认为这就是你想要它的方式)herehere是使用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,我已经为你编译了。丹,你能做到你想要的吗?