在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
感谢您的帮助。我做了很多研究,但我自己也无法解决这个问题。
答案 0 :(得分:0)
页面刷新后DOM已更改,因此您的鳕鱼将无效。 尝试:
$('html').find('.index_edit_comments').each(function() {
$(this).find(".index_edit_comments_input").blur(function() {
$(this).submit();
});
});
如果刷新更改所有DOM html,我的代码示例将无济于事。