我想根据复选框的选择启用禁用的文本字段,因此下面是根据复选框选择启用文本字段的JavaScript代码,这对我不起作用并使用struts 1.3 HTML标记< / p>
if(document.getElementsByName("cad.question7").checked = 'true'){
document.getElementsByName("cad.question7.answer8").disabled = 'false';
}
<html:checkbox value="Y" property="cad.question7" onclick="javascript:enableText7();" />
<bean:message key="cm.assessments.cad.question.7.a" />
<html:text size="10" disabled="true" property="cad.question7.answer8" tabindex="68" />
答案 0 :(得分:4)
getElementsByName返回HTMLCollection。
要访问集合中的每个元素,要么遍历它们,要么只有一个,请访问第一个,类似于:
document.getElementsByName("cad.question7.answer8")[0].disabled = false;
DEMO - 访问HTMLCollection
如果您希望多次匹配迭代它们,请执行以下操作:
var index;
var elements = document.getElementsByName("cad.question7.answer8");
var count = elements.length;
for(index = 0; index < count; index++){
elements[index].disabled = false;
}
DEMO - 迭代HTMLCollection
此外,在执行条件评估时,您使用==
或===
作为单个=
会将正确的值分配给左侧,而不是将它们相互比较。
假设只需要一个匹配项,您的完整代码可能与此类似:
if(document.getElementsByName("cad.question7")[0].checked){
document.getElementsByName("cad.question7.answer8")[0].disabled = false;
}
DEMO - 上面的新代码示例
答案 1 :(得分:1)
它应该是布尔值。 disabled
取布尔值,getElementsByName
返回数组中的多个元素。
disabled="false"
的问题在于它仍然在文本输入元素中留下了属性disabled
。
试试这个: -
if(document.getElementsByName("cad.question7")[0].checked){
document.getElementsByName("cad.question7.answer8")[0].disabled = false;
}
答案 2 :(得分:1)
==
或===
比较运算符,而不是=
赋值运算符。但是与布尔值进行比较是没有意义的,只需使用布尔本身(或其否定)。document.getElementsByName
不是单个元素,而是NodeList
。您需要迭代它,或者 - 为简单起见 - 访问它的第一个项目。checked
和disabled
属性都是布尔值。你不应该比较/给它们分配字符串,而是布尔值。if (document.getElementsByName("cad.question7")[0].checked) {
document.getElementsByName("cad.question7.answer8")[0].disabled = false;
}
你甚至可以这样做:
var question = document.getElementsByName("cad.question7")[0],
answer = document.getElementsByName("cad.question7.answer8")[0];
answer.disabled = !question.checked;
答案 3 :(得分:0)
您可以使用JavaScript代码,
但我建议你使用它(第一个):
if(document.getElementsByName("cad.question7").checked){
document.getElementsByName("cad.question7.answer8")[0].disabled = false;
}
或强>
if(document.getElementsByName("cad.question7").checked == true){
document.getElementsByName("cad.question7.answer8").disabled = false;
}
或强>
var chkTest = document.getElementsByName("cad.question7");
if(chkTest.checked){
document.getElementsByName("cad.question7.answer8").disabled = false;
}