javascript - Rails 5 使用 turbolink 加载 JS

标签 javascript jquery ruby-on-rails turbolinks

我很难在不重新加载页面的情况下让 javascript 工作。我相信问题与涡轮链接有关。

我正在为这样的表单设置一个 onsubmit 监听器

<%= form_for @cart, url: cart_path, html: {onsubmit: "addCart(event, #{@product.id})"} do |c| %>

然后我像这样通过ajax提交表单

function addCart(event, id){
   event.preventDefault();
   var quantity = $("#"+id+'_product_quantity').val()
   $.post('/cart/add', {
     product_id: id,
     quantity: quantity
   }, function(data, status, xhr){
     if(xhr.status !== 200){
       alert("There was an error. Please try again")
     }else {
       $("#"+id+'_product_submit').val("Added");
     }
   })
}

当我重新加载页面时一切正常,但是当我通过链接转到该页面时,javascript 不会被调用。奇怪的是 event.preventDefault() 正在工作。当我完全删除 javascript 时,表单将像普通的 html 表单一样提交。我是 jquery 的新手,不知道如何加载 javascript。

最佳答案

这可能是 turbolinks 问题。在您的 javascript 文件中,用

包围您的 javascript 代码
$(document).on('turbolinks:load', function() {
  // your code
});

关于javascript - Rails 5 使用 turbolink 加载 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42638440/

相关文章:

jQuery 匹配正则表达式

javascript - 如何从 Rails 数据库集合中返回选定的值?

javascript - 尝试将字母附加到输入中的文本

javascript - 如何将自定义 HTML 添加到 ngx Typeahead?

php - raty 星级评分插件,用于存储多个评分的数据

ruby-on-rails - rails : Change form action from submit_tag

mysql - Ruby/Rails/Mysql

javascript - 使用 coffeescript 延迟(反跳)ajax 请求

javascript - 使用带有数字问题的正则表达式拆分字符串

javascript - jquery load() 不适用于数组循环