使用 Rails 3.2 和 Rails 表单 - 不知道如何在单选按钮选中时显示输入文本字段,否则隐藏它
Using Rails 3.2 and Rails form - don't know how to display an input text field when a radio button is checked true and hide it otherwise
我在这里获取了几个帖子,但我仍然无法让它工作。
当 "Other" 单选按钮被选中时,我希望 f.text_field 显示出来,什么时候取消选中被隐藏。
我希望之后能够为 thr 属性 f.client_consent_refusal_reason.
输入文本值
这是我的 HTML:
<table>
<tr>
<td>
<%= form_for(@client, :url => {:controller => 'client', :action=> :outcome_consent_complete, :id => @client.id }) do |f| %>
<%= f.radio_button :client_consent_refusal_reason, 'Hearing loss', :checked => false %>
<%= f.label :radio_button_label, 'aaa' %>
<br>
<%= f.radio_button :client_consent_refusal_reason, 'bbb', :checked => false %>
<%= f.label :radio_button_label, 'ccc' %>
<br>
<%= f.radio_button :client_consent_refusal_reason, 'ddd', :checked => false %>
<%= f.label :radio_button_label, 'eee' %>
<br>
<%= f.radio_button :client_consent_refusal_reason, 'fff', :checked => false %>
<%= f.label :radio_button_label, 'ggg' %>
<br>
<%= f.radio_button :client_consent_refusal_reason, 'Other', :checked => false %>
<%= f.label :radio_button_label, 'Other' %>
<%= f.text_field :client_consent_refusal_reason %>
<br><br>
<div class="actions">
<%= f.submit 'Submit' %>
</div>
<% end %>
</td>
</tr>
</table>
当检查上述任何一个无线电按钮时,应该将字段client_consent_refusal_reason设置为关联值,但是当检查其他值时,我希望能够捕获通讯值。
我不知道如何解决这个问题。
我替换了这部分代码:
<%= f.radio_button :client_consent_refusal_reason, 'Other', :checked => false %>
<%= f.label :radio_button_label, 'Other' %>
<%= f.text_field :client_consent_refusal_reason %>
有了这个:
<%= f.radio_button :client_consent_refusal_reason, 'Other', :checked => false,
:onchange => "$('other_reason_input')[this.checked ? 'show' : 'hide']();" %>
<%= f.label :radio_button_label, 'Other (please list): ' %>
<div id="other_reason_input" style="display:none;">
<%= f.text_field :client_consent_refusal_reason_other %>
</div>
并且在模型 class 中我不得不添加这些行:
attr_accessor :client_consent_refusal_reason_other
def client_consent_refusal_reason_other=(value)
self.client_consent_refusal_reason = value if client_consent_refusal_reason == 'Other'
end
def client_consent_refusal_reason_other
client_consent_refusal_reason
end
现在一切正常。
我在这里获取了几个帖子,但我仍然无法让它工作。 当 "Other" 单选按钮被选中时,我希望 f.text_field 显示出来,什么时候取消选中被隐藏。 我希望之后能够为 thr 属性 f.client_consent_refusal_reason.
输入文本值这是我的 HTML:
<table>
<tr>
<td>
<%= form_for(@client, :url => {:controller => 'client', :action=> :outcome_consent_complete, :id => @client.id }) do |f| %>
<%= f.radio_button :client_consent_refusal_reason, 'Hearing loss', :checked => false %>
<%= f.label :radio_button_label, 'aaa' %>
<br>
<%= f.radio_button :client_consent_refusal_reason, 'bbb', :checked => false %>
<%= f.label :radio_button_label, 'ccc' %>
<br>
<%= f.radio_button :client_consent_refusal_reason, 'ddd', :checked => false %>
<%= f.label :radio_button_label, 'eee' %>
<br>
<%= f.radio_button :client_consent_refusal_reason, 'fff', :checked => false %>
<%= f.label :radio_button_label, 'ggg' %>
<br>
<%= f.radio_button :client_consent_refusal_reason, 'Other', :checked => false %>
<%= f.label :radio_button_label, 'Other' %>
<%= f.text_field :client_consent_refusal_reason %>
<br><br>
<div class="actions">
<%= f.submit 'Submit' %>
</div>
<% end %>
</td>
</tr>
</table>
当检查上述任何一个无线电按钮时,应该将字段client_consent_refusal_reason设置为关联值,但是当检查其他值时,我希望能够捕获通讯值。
我不知道如何解决这个问题。
我替换了这部分代码:
<%= f.radio_button :client_consent_refusal_reason, 'Other', :checked => false %>
<%= f.label :radio_button_label, 'Other' %>
<%= f.text_field :client_consent_refusal_reason %>
有了这个:
<%= f.radio_button :client_consent_refusal_reason, 'Other', :checked => false,
:onchange => "$('other_reason_input')[this.checked ? 'show' : 'hide']();" %>
<%= f.label :radio_button_label, 'Other (please list): ' %>
<div id="other_reason_input" style="display:none;">
<%= f.text_field :client_consent_refusal_reason_other %>
</div>
并且在模型 class 中我不得不添加这些行:
attr_accessor :client_consent_refusal_reason_other
def client_consent_refusal_reason_other=(value)
self.client_consent_refusal_reason = value if client_consent_refusal_reason == 'Other'
end
def client_consent_refusal_reason_other
client_consent_refusal_reason
end
现在一切正常。