2012-03-27 51 views
1

我有以下代码,如果选择“其他”,则显示并启用隐藏字段,否则该字段将隐藏而不可见。启用默认情况下禁用的字段

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;”在选择其他选项时似乎无法启用。

任何建议是非常感谢。

回答

1

使

您需要删除disabled从输入完全属性。

document.getElementById('otherSpecies').removeAttribute("disabled") ; 

禁用

要你需要设置disabled="disabled"有效的XHTML。

document.getElementById('otherSpecies').disabled = "disabled" ; 
1

我认为你应该为select和text_field指定id以避免重复的id。在你的情况下,选择和text_field将具有相同的ID和JS可能会搞砸。

相关问题