代码之家  ›  专栏  ›  技术社区  ›  user938363

简单表单上的只读复选框仍然可以更新

  •  3
  • user938363  · 技术社区  · 11 年前

    我们在rails 3.2应用程序中使用simple_form 2.0.2。对于某些布尔字段,我们希望在特定情况下使其只读,并且不允许更新。以下是我们应用程序中的代码:

    <%= f.input :signed, :label => t('Signed'), :as => :boolean, :readonly => readonly?(@project, 'signed') %>
    

    我们发现,如果 :readonly => true ,当鼠标在简单表单的字段上时,会出现一个红色的小圆圈(圆圈中有一个斜线)。但是,复选框仍然可以更改和保存。有没有办法使simple_form上的布尔复选框为只读,并且不能用:readonly更新?谢谢

    1 回复  |  直到 11 年前
        1
  •  15
  •   random    11 年前

    没有 :readonly

    这个 readonly HTML输入属性只阻止用户更改字段的值。这并不能阻止他们与它交互,就像点击它并切换复选标记所显示的那样。这只会更改复选框的状态,无论是打开还是关闭。

    这个 specs on the readonly attribute 这样说:

    只读的
    此布尔属性表示用户无法修改控件的值。

    如果您根本不希望他们更改状态,您可能需要使用disabled:

    残废
    此布尔属性表示表单控件不可用于交互。特别是,单击事件将不会在禁用的控件上调度。此外,禁用控件的值不会随表单一起提交。

    但是,由于输入没有一起发送,因此该值将丢失。因此,考虑将其与一个隐藏字段配对,该字段实际上包含该值。

    <%= f.input :signed_display, :label => t('Signed'), :as => :boolean, :disabled => true %>
    <%= f.input :signed, :as => :hidden, input_html: {value: @project} %>