刷新页面时Javascript无法正常工作(Rails)

时间:2014-10-22 20:56:05

标签: javascript jquery ruby-on-rails

在Rails 4上,每当我关注输入字段时,我都会尝试提交表单,而不必单击提交。当我将脚本放在html页面上时,它可以正常工作:

      <td>
        <%= form_for commitment, html: {class:"index_edit_comments"}, remote: :true do |f| %>
          <%= f.text_field :comments, class:"index_edit_comments_input" %>
        <% end %>
        <script>
            $(document).ready(function() {    
              $(".index_edit_comments").each(function() {
                $(this).find(".index_edit_comments_input").blur(function() {
                    $(this).submit();    
                });
              });
            });
        </script>
      </td>

但是当我将相同的代码移动到单独的.js文件时,它无法正常运行。它在加载页面后立即工作,但是当我使用另一个刷新页面的函数时,它会停止工作。 在.js.coffee文件中,它看起来像这样:

$(document).ready ->
  $(".index_edit_comments").each ->
    $(this).find(".index_edit_comments_input").blur ->
      $(this).submit()
      return
    return
  return

刷新页面的另一个功能是:

在index.html.erb:

<% if commitment.check == true %>
  <td><%= link_to 'Yes', toggle_check_commitment_path(commitment), type: "button" %></td>        
<% else %>
  <td><%= link_to 'No', toggle_check_commitment_path(commitment), type: "button" %></td>
<% end %>  

在控制器:

def toggle_check
  @c = Commitment.find(params[:id])
  @c.toggle!(:check)
  redirect_to commitments_path
end

感谢您的帮助。我做了很多研究,但我自己也无法解决这个问题。

1 个答案:

答案 0 :(得分:0)

页面刷新后DOM已更改,因此您的鳕鱼将无效。 尝试:

$('html').find('.index_edit_comments').each(function() {
            $(this).find(".index_edit_comments_input").blur(function() {
                $(this).submit();    
            });
          });

如果刷新更改所有DOM html,我的代码示例将无济于事。