我很难在没有重新加载页面的情况下使javascript工作。我认为这个问题与turbo链接有关。
我正在为这样的表单设置一个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。
答案 0 :(得分:2)
这可能是一个涡轮问题。在您的javascript文件中,使用
包围您的javascript代码$(document).on('turbolinks:load', function() {
// your code
});
答案 1 :(得分:0)
所以这与turbolinks有关。我无法弄清楚如何使其与turbo链接一起使用,因此我从docker/daemon/network.go
docker/api/types/swarm/network.go
文件中删除了//= require turbolinks
行。