我很难在不重新加载页面的情况下让 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/