Rails - 使用带有javascript操作的单选按钮来启用/禁用附加的元素

时间:2012-09-04 07:01:55

标签: javascript ruby-on-rails-3 forms

我想创建一个表单,其中有一个包含三个链接单选按钮的块,每个按钮都附加一个单独的输入字段,例如

  • 选项1:[ __ 下拉框 __ ]
  • 选项2:[ __ 下拉框 __ ]
  • 选项3:[ __ 文字字段 __ ]

三个选项中的每一个都将在模型中具有属性。

我希望三个选项中的每一个都有一个单选按钮,选中它后会自动激活它旁边的输入字段,并禁用其他两个。在提交表单的控制器中,我还需要知道选择了哪个单选按钮,从相关输入中获取值,并在保存记录之前将其他两个字段设置为nil。

几个月前我尝试了这个并且失败了,现在再说一遍对我来说仍然没有多大意义,我对任何网络用户界面/标记语言都缺乏经验。

如果有人能指出我的例子或必要的资源,那么我可以阅读我需要结合的各种方法,我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-radio_button

将值传递给:class以对单选按钮进行分组。为每个单选按钮分配不同的id,并在javascript中处理相关字段的隐藏/显示。在模型中,根据所选单选按钮传递的值使用验证。

validates :mmc_value, :numericality => { :message => ERR_NUMBER }, :if => :modifier_type

def modifier_type
  ['MMC', 'LMC'].include?(self.modifier) #modifier is the value on which the validation of other fields is based.
end

答案 1 :(得分:0)

我最终这样做是为了让它发挥作用:

查看:

<label for="hide" style="display: inline-block">Override V</label>
<input id="v_toggle" type="checkbox" value="Hide" />
<br/>
<%= f.input :v_id, :collection => @vs, :prompt => "Choose a V" %>
<%= f.input :v, :label => false %>

JS档案:

jQuery(document).ready(function(){
    $('#service_v').hide();
    jQuery('#v_toggle').live('click', function(event) {        
        jQuery('#service_v_id').toggle('show');
        jQuery('#service_v').toggle('show');            
    });
});