You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rails Simple Form中用jQuery基于单选按钮选中状态渲染输入表单

实现单选按钮切换显示对应表单(jQuery版)

没问题,我来帮你搞定这个功能!咱们一步步来:

首先,先保留你现有的单选按钮代码,然后添加两个分别对应「Email」和「Url」的输入表单区域,默认先把它们藏起来,避免一开始就全部显示:

<div class="form-group">
  <label class="col-md-1 control-label"></label>
  <div class="col-md-9">
    <%= f.input :job_application_type, as: :radio_buttons, collection: [['Apply By Email', 'Email'], ['Apply By Url', 'Url']], :label => "How to apply" %>
  </div>
</div>

<!-- 对应Email的表单,默认隐藏 -->
<div id="email_apply_form" class="form-group" style="display: none;">
  <label class="col-md-1 control-label">申请邮箱</label>
  <div class="col-md-9">
    <%= f.input :application_email, label: false, placeholder: "请填写接收申请的邮箱地址" %>
  </div>
</div>

<!-- 对应Url的表单,默认隐藏 -->
<div id="url_apply_form" class="form-group" style="display: none;">
  <label class="col-md-1 control-label">申请链接</label>
  <div class="col-md-9">
    <%= f.input :application_url, label: false, placeholder: "请填写申请跳转链接" %>
  </div>
</div>

这里我直接用style="display: none;"来隐藏表单,如果你用了Bootstrap,换成hidden类也完全没问题。

接下来是核心的jQuery逻辑,用来监听单选按钮的切换事件,动态显示/隐藏对应表单:

$(document).ready(function() {
  // 页面加载时先检查默认选中的选项,显示对应表单
  const defaultSelected = $('input[name="job[job_application_type]"]:checked').val();
  if (defaultSelected === 'Email') {
    $('#email_apply_form').show();
  } else if (defaultSelected === 'Url') {
    $('#url_apply_form').show();
  }

  // 监听单选按钮的切换事件
  $('input[name="job[job_application_type]"]').on('change', function() {
    const selectedValue = $(this).val();
    
    // 先把两个表单都隐藏
    $('#email_apply_form, #url_apply_form').hide();
    
    // 根据选中的值显示对应表单
    if (selectedValue === 'Email') {
      $('#email_apply_form').show();
    } else if (selectedValue === 'Url') {
      $('#url_apply_form').show();
    }
  });
});

简单解释下代码:

  • $(document).ready():确保页面DOM加载完成后再执行JS,避免找不到元素的问题。
  • 初始状态检查:处理页面刷新或者表单默认选中某选项的情况,保证一打开页面状态就是对的。
  • change事件监听:用户切换单选按钮时,先统一隐藏所有表单,再显示选中类型对应的表单,不会出现两个表单同时显示的混乱情况。

小提醒:

注意单选按钮的name属性哦,我这里写的job[job_application_type]是Rails表单默认生成的格式,如果你实际项目里的name不一样,记得改成你自己的——可以用浏览器开发者工具查看单选按钮的真实name属性。

内容的提问来源于stack exchange,提问作者Hakeem Baba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:05:44