-1

我想根据复选框的选择启用禁用的文本字段,所以下面是基于复选框的选择启用文本字段的 JavaScript 代码,这对我不起作用并且正在使用 struts 1.3 HTML 标签

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" />
4

4 回答 4

5

getElementsByName返回一个HTMLCollection

要访问集合中的每个元素,要么遍历它们,要么如果你只有一个,访问第一个,类似于:

document.getElementsByName("cad.question7.answer8")[0].disabled = false;

演示- 访问第一个项目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 - 上面的新代码示例


于 2013-05-09T07:18:43.360 回答
1

它应该是布尔值。disabled接受布尔值并getElementsByName返回数组中的多个元素。

你的问题disabled="false"是它仍然disabled在你的文本输入元素中留下属性。

尝试这个:-

if(document.getElementsByName("cad.question7")[0].checked){

    document.getElementsByName("cad.question7.answer8")[0].disabled = false;
}

参考:-

按名称获取元素

禁用

于 2013-05-09T07:11:37.323 回答
1
  • 在 if 条件中,您要使用=====比较运算符,而不是=赋值运算符。但是与布尔值进行比较是没有意义的,只需使用布尔值本身(或其否定)。
  • document.getElementsByName返回的不是单个元素,而是一个NodeList. 您将需要对其进行迭代,或者 - 为简单起见 - 访问它的第一项。
  • checkeddisabled属性都是布尔值。您不应该比较/分配字符串给它们,而是布尔值。
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;
于 2013-05-09T07:22:04.820 回答
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;
}
于 2013-05-09T07:19:57.587 回答