我有以下代码,如果选择“其他”,则显示并启用隐藏字段,否则该字段将从视图中隐藏并禁用。
Type: <%= f.select(:origin_type,
[['origin X', 'x'],
['Other', 'Other'],
['Origin Y', 'y']
],
{:prompt => "Please select"},
{:onchange => "if (this.value == 'Other')
{document.getElementById('otherOrigin').style.display = 'block';
document.getElementById('otherSpecies').disabled = false ;}
else
{document.getElementById('otherSpecies').style.display = 'none';
document.getElementById('otherSpecies').disabled = true ; }"
}
) %>
<span id="otherOrigin" style="display:none;"> If other, please state: <%= f.text_field :origin_type, :disabled=>true %></span>
默认情况下,text_field“otherOrigin”被隐藏和禁用,但如果选择“其他”,我想显示并启用它。
当选择其他代码时,代码“document.getElementById('otherSpecies').disabled = false;
”似乎无法启用它。
任何建议都表示赞赏。
答案 0 :(得分:1)
启用
您需要完全从输入中删除disabled
属性。
document.getElementById('otherSpecies').removeAttribute( "disabled" ) ;
停用
要成为有效的XHTML,您需要设置disabled="disabled"
。
document.getElementById('otherSpecies').disabled = "disabled" ;
答案 1 :(得分:1)
我认为你应该为select和text_field指定id以避免重复的id。在你的情况下,select和text_field将具有相同的id,并且js可能会搞乱。