ページをリロードせずにJavascriptを動作させるのは苦労しています。私は問題がターボリンクと関係していると信じています。Rails 5はJSをターボリンクでロードします
私はその後、私はページをリロードが、ときに私際にすべてが完璧に動作します。この
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");
}
})
}
のようにAJAXを経由してフォームを送信しています。この
<%= form_for @cart, url: cart_path, html: {onsubmit: "addCart(event, #{@product.id})"} do |c| %>
のようなフォームにonSubmit検証のリスナーを設定していますjavascriptが呼び出されないリンクを介してページに移動します。奇妙なことは、event.preventDefault()
が機能していることです。私がjavascriptを完全に削除すると、フォームは通常のHTMLフォームのように送信されます。私はjqueryにかなり新しく、javascriptを読み込む方法を理解できません。
jQueryの 'document.ready(...)'コールバックを使用していますか? – Mark
いいえ私はそうではありません。 $( "#id")。submit()構文でリスナーをアタッチする場合にのみ必要な印象を受けました。 –