[英]Rails 3 - Checkbox dependant of radio button selection
我需要一个解决方案来根据单选按钮选择隐藏/显示复选框。 我尝试了在这里和那里找到的其他解决方案,但是我可以使它们工作。
上下文:我拥有可以与公司相关联的联系人。 用户可以选择多个联系人,但必须选择主要联系人。 因此,我有一个单选按钮组,其中所有联系人都可以选择主要联系人,还有一个复选框组,其中所有联系人都可以再次选择“其他”联系人。
需要:现在,我想做的是,当用户在单选按钮组中选择主要联系人时,该联系人将从“其他联系人”复选框组中删除,因此用户不能两次选择同一联系人。 我可以使用JQuery以及普通的JavaScript。
约束:单选按钮组以及复选框组是使用Rails Tag帮助器动态创建的。 因此,对于元素的ID和名称来说有点棘手。 此外,业务和联系之间还有一个has_many:槽。
因此,对于单选按钮,我有:
<% @contacts.each do |contact| %>
<li><%= radio_button_tag 'primary_contact', contact.id, @primary_contact == contact, :class => 'radio'%> <%= contact.name %>, <%= contact.contact_type.name %></li>
<% end %>
对于复选框组,我有:
<%= hidden_field_tag 'business[contact_ids][]', "" %>
<% @contacts.each do |contact| %>
<li><%= check_box_tag 'business[contact_ids][]', contact.id, @business.contacts.include?(contact), :class => 'radio' %> <%= contact.name %>, <%= contact.contact_type.name %></li>
<% end %>
任何有关实现我的目标的其他设计的建议(使用单选按钮和复选框...)都非常欢迎。
谢谢阿兰
<li><%= radio_button_tag ... :id => "#{contact.id}", :onclick => 'removeFromOtherList(this.id);' %><%= " #{contact.name}, #{contact.contact_type.name}" %></li>
这样,您可以获取HTML标签ID的联系人ID。 单击将删除\\禁用其他联系人
对其他联系人执行相同的操作
...<%= check_box_tag ... :class => 'radio', :id => "otherContact#{contact.id}" %> ...
然后,我们可以从其他列表中删除正确的联系人
function removeFromOtherList(contactId) {
$("#otherContact"+contactId).parent().remove(); //to remove the LI
}
编辑:
一种方法是使用显示/隐藏并跟踪上次选择的收音机
var lastSelectedRadioId = null;
function removeFromOtherList(contactId) {
$("#otherContact"+contactId).parent().hide();
if(lastSelectedRadioId ){
$("#otherContact"+lastSelectedRadioId ).parent().show();
}
lastSelectedRadioId = contactId;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.