【问题标题】:jQuery doesn't work after form validation fails表单验证失败后 jQuery 不起作用
【发布时间】:2014-11-03 02:43:14
【问题描述】:

我正在使用 Rails 4 和 jQuery-File-Upload,但在表单验证和 jQuery 激活方面存在一些问题。在我提交表单后,如果表单中有一些错误,我会在我的 respond_to js.erb 文件中再次呈现表单,如下所示:

<% if @cat.new_record? %>
    $('#new_cat').html('<%= j render('form') %>');
<% else %>
    ...
<% end %>

这会显示所有验证错误,但同时会禁用不会再次初始化的 jQuery-File-Upload。现在,当我想提交一个新表单时,它不能正常工作,它只是在提交后显示代码,因为不存在 jQuery 函数。再次渲染表单后,如何再次初始化 jQuery。

我试图把它放在我的咖啡脚本中,但没有帮助:

$(document).on "ready page:load", initMyFunction

它不会在页面加载时记录表单的呈现。有什么想法吗?

【问题讨论】:

    标签: javascript jquery ruby-on-rails coffeescript jquery-file-upload


    【解决方案1】:

    这听起来可能是 rails 4、jquery 和 turbolinks 的问题。将 turbolink 视为整个页面的 ajax 替换。它与rails 4一起默认。它和jquery的问题是你的jquery在第一次加载页面时运行并绑定到东西......并且不会重新运行以绑定到下一页“加载”上的新东西。如果您手动刷新页面并且问题停止,则可能是一个迹象。

    有两种可能的解决方案。在过去,我采取了快速的短期解决方案,即只删除 turbolinks 下面是一个链接,其中包含有关如何执行此操作的说明:

    http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4

    或者,有一个 gem 可以帮助 turbolink 与您的项目配合得很好。我还没有使用它,但在这个 stackoverflow 中讨论了它:

    Rails 4 TurboLinks and jQuery Dynamic Links Not Playing Nice

    【讨论】:

    • 谢谢。这绝对是个问题!我不想从我的应用程序中删除 turbolinks,所以我正在寻找一些不同的解决方案。如果再次呈现表单,您认为我该如何注册?我试图在包装表单的 div 上收听 on change,但它没有注册 div 的更改。
    • 我首先尝试上面链接的另一个堆栈溢出问题中提到的 jquery-turbolinks gem。我相信它会保留 turbo 链接,但可以解决它们和 jquery 的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    相关资源
    最近更新 更多