【问题标题】:Rails select 'Other' option creating text fieldRails 选择“其他”选项创建文本字段
【发布时间】:2014-05-22 00:05:45
【问题描述】:

给定一个标准的选择代码:

<%= f.select :type_name, [['Genomics','Genomics'],['Proteomics','Proteomics'],['Transcriptomics','Transcriptomics'],['Other','Other'] %>

有人可以解释如何在选择“其他”时创建文本字段?所以 type_name 可以是 select 中的选项以外的东西?

我意识到这是一个简单的问题,但我还没有找到一个简洁的答案!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4


    【解决方案1】:

    有很多方法可以做到这一点,但它们都需要 JavaScript。我喜欢的一般方法是将隐藏的文本字段放在表单中,然后将JavaScript事件处理程序附加到 select tag @ tag,该字段在选择“其他”选项时显示该字段。

    这是script I typically use 的要点。它使用数据属性处理 JavaScript 绑定。将脚本添加到您的资产中,然后在您的表单中添加如下内容:

    <%= f.select :type_name, [['Genomics','Genomics'],['Proteomics','Proteomics'],['Transcriptomics','Transcriptomics'],['Other','Other'] %>
    <%= f.text_field :type_name_other, "data-depends-on" => "#object_type_name", "data-depends-on-value" => "Other" %>
    

    #object_type_name 是下拉列表的 HTML id。

    【讨论】:

    • 所以我相信我已经找到了 Rails HTML ID,并且我已经知道了,所以当我打开表单时文本框会被隐藏。但是,当我单击其他时,它不会出现! ID 只是:...['Other','Other']], {}, :id =&gt; "name_of_id",对吗?
    • 可以贴出生成的html吗?
    • 该页面使用了nested_form gem,并且有问题的保管箱从126开始。
    • HTML 看起来不错,但我不熟悉您使用的框架。在模板呈现为 HTML 后,您需要找到一种方法来绑定 Javascript 事件处理程序。也许它会触发自定义事件?
    • 或者另外,是的。
    【解决方案2】:

    您需要在 f 附加到的模型上创建一个 attr_accessor(如 type_name_other),在最初隐藏的 div 中的 type_name_other 选择下方的表单中添加一个 text_field(在 CSS 中:display:none),然后创建一个 javascript 侦听器,用于检测选择表单何时发生更改以及所选分析器是否为“其他”显示隐藏字段,否则将其隐藏。然后,您需要在处理表单时查看 type_name_other 是否有值,如果有,请使用它。

    【讨论】:

      猜你喜欢
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      • 2015-03-13
      相关资源
      最近更新 更多