禁用的 Haml 字段未传递到我的 rb 文件

Disabled Haml field is not passed to my rb file

我有一个表单,其中有一些输入字段。这个表单,首先从数据库中获取值并填写它们。如果它们有值,它们将被禁用。

=text_field_tag("dt|#{a_key}",(begin;a_mock["dt_open"];rescue;nil;end), :class => "form-control",  :disabled => a_mock["active"] == "true" )

在我的 rb 文件中有一个验证日期的规则。如果字段为空:

if !dt_open.blank?
   ...
end

我注意到,如果该字段被禁用,它就不会发送。我知道,因为我打印了消息,但该字段不存在。 如何克服 haml 中的这种行为?

您可以使用 hidden_field_tag 来 post 提交时的值。我也只是在 p 标签中打印值,而不是显示禁用的文本输入,但这只是我的意见。

- if a_mock["active"] == "true"
  = hidden_field_tag "dt|#{a_key}", a_mock["dt_open"]
  p= a_mock["dt_open"]
- else    
  = text_field_tag "dt|#{a_key}", a_mock["dt_open"], class: "form-control"

输入 disabled attribute 将不会提交,您可以使用 readonly 而不是 disabled,做了几乎相同的事情,您无法更改或编辑输入字段值.

另一种解决方案

如果您仍想使用 disabled attribute 您可以应用以下 javascript 以允许提交 disabled

 <script>
     $('#your_form_id').submit(function() {
          $("#disabled_input_field_id").prop('disabled', false);
          //your code goes here
     })
 </script>