繁体   English   中英

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

[英]How to enable/disable text field on radio button interaction?

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

您需要将一个字符串传递到您的disablefield ,因此在传递时将值放在引号中。类似于:

<input onclick="disablefield('2671997')" />

这是因为document.getElementById需要一个字符串,而不是 integer。

其次,要启用/禁用该字段,您需要使用disabled = true; 而不是= 'disabled'

document.dupedit.lineid正在查找名称为“lineid”的字段,该字段在您的表单中不存在。 我建议给该字段一个id并再次使用document.getElementById

如果要继续使用name属性,则必须改用document.getElementsByName 这将返回一个匹配元素的数组(因为多个元素可以共享相同的名称),但是如果在您的代码中您知道所讨论的元素是唯一具有该名称的元素,您可以这样做:

document.getElementsByName(lineid)[0].disabled = true;

你可以在这里看到一个工作版本(我认为这就是你想要的)。 是使用getElementsByName的版本。

您在 function 上缺少右括号:

function disablefield(lineid){ 
if (document.getElementById(lineid).checked == true){ 
document.dupedit.lineid='enabled';
}else{ 
document.dupedit.lineid='disabled';
} 
} //<-- here

另外,我可以建议您将this传递给 function。 然后你不必调用getElementById

<input onclick='disablefield(this)' type.....

function disablefield(obj){ 
    if (obj.checked == true){ 
        document.dupedit.lineid='enabled';
    }else{ 
        document.dupedit.lineid='disabled';
    } 
} 

我认为您需要重新考虑代码。

  • 不要在复选框上使用 ID。 最好将该 ID 移动到您要禁用/启用的文本字段并检查该字段是否已禁用/启用,而不是复选框本身

  • 使用更清洁的 JS。

请看一下我为你编译的 jsFiddle 它符合你的预期吗,丹?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM