2012-09-24 7 views
13

Tôi đang cố gắng để tạo ra một hình thức simpleform thường xuyênBiểu mẫu đơn giản: Có thể xóa nhãn và thay thế chúng bằng trình giữ chỗ bằng cách sử dụng nhãn i18n không?

= 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 

Nhưng tôi muốn các yếu tố đầu vào không được trả lại với một nhãn, chỉ cần danh hiệu "Dòng địa chỉ 1" trong placeholder.

Tôi biết tôi có thể làm điều này với f.input :address1, :placeholder => "whatever", :label => "" nhưng tôi muốn nó có thể định cấu hình với trình bao bọc và lấy nhãn biểu mẫu giá trị i18n, không phải trình giữ chỗ.

+7

sử dụng: label => sai và không được phép: label => "", sau này sẽ vẫn tạo ra một thẻ nhãn trong DOM. – mmvie

+0

Tôi nghĩ [this] [1] là câu trả lời bạn đang tìm kiếm. [1]: http://stackoverflow.com/a/18199780/186145 – wspruijt

Trả lời

-2

Nếu bạn muốn sử dụng javascript, đây là một đoạn jQuery mà không được công việc:

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

Ưu điểm chính sử dụng js cho trường hợp này là kết quả vẫn là trình đọc màn hình phù hợp (họ sẽ đọc nhãn vì chúng sẽ không chạy js).

+6

Tôi không đồng ý với điều này. Có nhiều cách để thực hiện điều này dưới dạng đơn giản và không có javascript. – Senjai

+0

@Senjai nhận xét cũ tôi biết, nhưng bạn có thể đi sâu vào chi tiết hoặc liên kết về cách bạn có thể thực hiện việc này thay thế không? – Huw

+1

Xin lỗi bỏ qua giải pháp này là thông qua liên kết trùng lặp ở trên, xem [tại đây] (https://stackoverflow.com/questions/18077082/how-to-use-placeholders-instead-of-labels-in-simple-form/18199780 # 18199780) – Huw

21

Hãy thử làm như sau:

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