【问题标题】:Rails 5 - hidden_field_tag populated by JS not submiting form via :onchangeRails 5 - 由 JS 填充的 hidden_​​field_tag 未通过:onchange 提交表单
【发布时间】:2017-06-01 21:07:05
【问题描述】:

在 Rails 5 上,我使用 datepicker jQuery UI 函数填充了一个带有日期的 hidden_​​field_tag。视图当前看起来像这样 -

 <script>
    $( function() {
        $('#datepicker').datepicker({
        inline : true,
        altField : "#date_search",
        onSelect : function(){ $('#date_search').submit();} 
        });
    });
    </script>
(...)
<%= form_tag(escala_index_path, :method => :get ) do %>
        <%= hidden_field_tag("date_search") %>
        <%= submit_tag "Search", name: nil %>
<% end %>

哪个工作正常。但是我想删除 submit_tag 并让表单提交更改的日期,因为在与 select_tag 类似的表单中,我尝试了 :onchange 选项:

<%= hidden_field_tag("date_search", "", :onchange => ("this.form.submit();")) %>

但是什么也没发生。关于我做错了什么的任何提示?

【问题讨论】:

  • onSelect : function(){ $('#date_search').submit();} 应该类似于onSelect : function(){ $('#your-form-id').submit();} ,将your-form-id 替换为您的表单ID。例如:&lt;%= form_tag(escala_index_path, :method =&gt; :get, :id =&gt; 'my-form' ) do %&gt;onSelect : function(){ $('#my-form').submit();}
  • 乍一看它工作得很好,明天我会鬼混以确保,非常感谢您的快速回答!只是一个问题,如果在“onSelect”中我需要指定表单名称,而不是参数,为什么它与 submit_tag 一起使用?

标签: javascript jquery ruby-on-rails onchange hidden-field


【解决方案1】:

$('#date_search').submit(); 不起作用,因为提交事件没有冒泡到表单。

$(function() {
  $("#datepicker").datepicker({
    inline : true,
    altField : "#date_search",
    onSelect : function(){ this.form.submit() } 
  });
});

【讨论】:

  • 我猜测内联 :onchange =&gt; ("this.form.submit();")) 不起作用,因为 jQuery UI Datepicker 不会触发输入上的正常更改事件。
  • 这使得页面在选择日期时重新​​加载,但参数没有发送到服务器。内联 :onchange 在我给表单一个 id 后工作,正如上面用户 fanta 评论的那样。我将不得不尝试将日期作为选择的参数发送(当重新加载页面/发送参数时,日期选择器会返回到今天的日期)。还是谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 2012-04-15
  • 2022-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多