如何创建具有依赖字段的表单?(RoR)

亚历克斯

我想知道如何创建一个表单,该表单显示依赖于预先选择的字段的字段。例如:如果选择咖啡作为饮料,那么我才允许输入糖和牛奶的量。

这是我的表格:

<%= simple_form_for(@order) do |f| %>
    <%= f.error_notification %>
    <div class="field">
    Drink: <%= f.select :drink, ['Coffee', 'Orange Juice', 'Tea'], id: 'extended_list' %><br />
    </div>
    Coffee Type: <%= f.select :coffee_type, ['Espresso', 'Cappuccino', 'Filter', 'Greek', 'Frappe', 'Latte'] %><br />

    Sugar Amount: <%= f.select :sugar_amount, ((1..5).map {|i| [i,i] } << ["None",nil]) %><br />

    Milk Amount: <%= f.select :milk_amount, ((1..5).map {|i| [i,i] } << ["None",nil]) %><br />
    <% end %>
      <%= f.button :submit, class: "button is-info" %>

    <% end %>
弗拉维奥·温舍

首先,您需要将要隐藏在 div 中的字段包装起来。为它们中的每一个添加一个不同的 id。

比如你想隐藏coffee_type,你可以给它添加id“js-coffee-type”。

此外,添加一个类(例如,d-noneBootstrap 使用的 ),以便我们可以使用 CSS 隐藏它。

    <%= simple_form_for(@order) do |f| %>
      <div class="field">
        Drink: <%= f.select :drink, ['Coffee', 'Orange Juice', 'Tea'], id: 'extended_list' %><br />
      </div>

      <div id="js-coffee-type" class="d-none">Coffee Type: <%= f.select :coffee_type, ['Espresso', 'Cappuccino', 'Filter', 'Greek', 'Frappe', 'Latte'] %></div>
      <div>Sugar Amount: <%= f.select :sugar_amount, ((1..5).map {|i| [i,i] } << ["None",nil]) %></div>
      <div>Milk Amount: <%= f.select :milk_amount, ((1..5).map {|i| [i,i] } << ["None",nil]) %></div>

      <%= f.button :submit, class: "button is-info" %>
    <% end %>

在同一个文件中,您可以编写隐藏此字段的 CSS 代码。

    <style>
    .d-none { display: none; }
    </style>

现在您可以编写 JS 代码来根据第一个字段切换类。

    <script>
    $("#extended_list").change(function() {
      var drink = $("#extended_list").val();

      if (drink == "Coffee") {
        $("#js-coffee-type").removeClass("d-none");
      } else {
        $("#js-coffee-type").addClass("d-none");
      }
    });
    </script>

这些不是最佳实践,但它们应该起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SwiftUI 和 Combine - 如何创建具有与用户选择对应的字段数的表单

如何使用具有来自不同查询集的值的 Modelchoice 字段创建 Django 表单/表单集

如何添加具有相同类名的表单的输入字段

如何创建具有z依赖填充颜色的matplotlib行

如何创建具有依赖关系的单元测试

创建具有水平和垂直表单字段的引导表单

如何使用python字典创建带有日期字段的表单

django如何创建依赖字段的字段

如何创建具有子组件的禁用表单?

如何创建具有MsProject之类的devexpress GanttView,并具有自动布局的依赖项

创建公共类,具有依赖关系,如何正式共享此依赖关系?

如何为字段创建具有枚举类型的对象

如何针对具有记录字段的表创建视图?

如何创建具有未知字段的Lambda表达式?

如何实现具有spanX属性和表单字段标签的表单?

如何处理节点中具有多个字段的表单中的表单数据?

表单POST HTML具有相同的字段

具有动态字段的Sonata管理表单

RoR创建表单并传回哈希

从bash创建具有依赖项的jar

创建具有依赖项的R包

创建具有依赖类型的简单函数

MSAccess:如何创建一个带有字段的表单,该表单更新共享该字段的多个表?

如何在 Flutter 文本表单字段具有有效数据之前禁用按钮

如何根据Django模型中的“国家/地区”字段具有“城市”字段,而不创建其表

我根据获取的数据创建了输入字段,但如何仅针对具有值的输入字段

如何在rails 4中创建具有父字段的has_many关联字段

如何在树枝中检查表单字段是否具有标签

如何填写具有相同类别的表单字段