【问题标题】:Simple Form: Is it possible to remove labels and replace them with placeholders using the labels i18n? [duplicate]简单形式:是否可以使用标签 i18n 删除标签并用占位符替换它们? [复制]
【发布时间】:2012-09-15 13:18:09
【问题描述】:

我正在尝试生成一个常规的简单形式

= simple_form_for [:hq, @team, @order] do |f|
  .tickets
    = f.select :tickets, :aaa => "aaa"
    = render "ticket"


  .details
    .left
      = f.input :address1
      = f.input :address2
      = f.input :state
      = f.input :country
      = f.input :email
    .right
      = f.input :comments

但我希望输入不使用标签呈现,只是占位符中的标题“地址行 1”。

我知道我可以使用 f.input :address1, :placeholder => "whatever", :label => "" 做到这一点,但我希望它可以使用包装器进行配置,并采用 i18n 值形式标签,而不是占位符。

【问题讨论】:

  • 使用 :label => false 而不是 :label => "",后者仍然会在 DOM 中生成 label 标签。
  • 我认为 [this][1] 是您正在寻找的答案。 [1]:stackoverflow.com/a/18199780/186145

标签: ruby-on-rails simple-form


【解决方案1】:

尝试执行以下操作:

f.input :address1, placeholder: "Address Line 1", label: false

【讨论】:

    【解决方案2】:

    如果你想使用 javascript,这里有一个 jQuery sn-p 可以完成这项工作:

    $.each($(".left .input"), function() {
      var label = $("label",$(this)).text();
      $("label",$(this)).hide();
      $("input",$(this)).attr("placeholder",label);
    });
    

    在这种情况下使用 js 的主要优点是结果仍然符合屏幕阅读器的要求(他们会阅读标签,因为他们不会运行 js)。

    【讨论】:

    • 我不同意这一点。有一些方法可以用简单的形式实现这一点,而无需 javascript。
    • @Senjai 旧评论我知道,但您能否详细说明或链接您如何执行此操作?
    • 道歉忽略此解决方案是通过上面的重复链接,请参阅here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 2011-03-06
    • 2020-09-21
    • 1970-01-01
    • 2016-05-18
    • 2012-04-07
    • 1970-01-01
    相关资源
    最近更新 更多