2017-12-22 2 views
0

비슷한 문제가 몇 가지 있습니다. 그러나 제 경우에는 그 중 아무 것도 작동하지 않는 것으로 알고 있습니다.JQuery 이벤트가 실행되지 않음 처음 클릭

$(document).ready(function() { 

    CartCount(); 

    $('.product-item input[type="submit"]').on('click', CartCount); 

}); 

function CartCount() { 
    var cartItems = 0; 
    var cartItemTypes = iGetCookie("NumberOrdered", 0); 
    var cartItem; 
    for(i = 1; i <= cartItemTypes; i++) { 
    cartItem = String(GetCookie("Order." + i)).split("|"); 
    cartItems += parseInt(cartItem[1]); 
    } 
    $('.top-cart-count').html(cartItems); 
} 

코드는 두 번째 클릭 후 완벽하게 작동하지만 결코 첫째 :

나는이 JQuery와 코드 싹둑 있습니다. 두 번째 클릭 후 .top-cart-count는 이전 클릭에서 표시되어야하는 cartItems 값을 표시합니다. 어떤 아이디어?

편집 : 무슨 일인지 잘 모르겠다면 죄송합니다. 실제로 쿠키가 여러 개 있습니다. 사용자가 주문한 모든 유형의 항목과 각 항목 유형에 대해 1을 합한 값은 1입니다. 각 개별 유형에 대한 쿠키 내에서 색인 1에 해당 수량을 포함하는 배열이 있습니다. CardCount()는 기본적으로 정렬 된 항목이있는 경우 모든 유형에 대한 모든 수량을 요약합니다 (적어도 하나의 유형). 기본적으로 항목 수를 업데이트하고 양식을 제출할 때 업데이트 된 횟수를 표시하려고합니다. 기본적으로 다른 유형의 숫자를 저장하는 쿠키는 0으로 설정되어 있으므로 값을 업데이트하지 않는 한 표시 전에 add 함수를 호출 할 필요가 없다고 생각합니다.

내 HTML :

<form onSubmit="return AddToCart(this)"> 
     <input type="submit" value="Add to Cart"> 
     </form> 
+0

왜 CartCount()를 호출하고 있습니까? 이미 콜백 일 때로드시에? – zer00ne

+0

@ zer00ne .top-cart-count는 기본적으로 cartItems가 쿠키 값인 동안 0으로 설정됩니다. cartItems를로드 할 때 표시하고 클릭 수를 업데이트하고 싶습니다. – Wallie

+0

쿠키 나 HTML과 같은 실제 데이터의 예제가 없으므로 OK입니다. 코드를 완벽하게 복제 할 수는 없지만 작동하는 데모는 결코 적습니다. – zer00ne

답변

0

@wow 및 @zerrone이 문제가 뭔가 다른 (다른 함수가 비동기 적으로 실행)에 의해 발생되는 약 정확합니다. 카트 항목을 업데이트 할 때 . 제품 항목 입력 [type = "submit"]이 제출되었습니다. 동시에 입력을 클릭하면 업데이트 된 값을 표시하려고했습니다. 어떤 이유로 업데이트 기능 (AddToCart) 전에 표시 기능 (CartCount)이 호출되었습니다.

나는이에 코드를 변경 덧붙였다 도움 모든 <form onSubmit="return updateCart(this)">

감사 : 내 HTML에서

$(document).ready(function() { 

    CartCount(); 

}); 

function updateCart(form) { 
    AddToCart(form); 
    CartCount(); 
} 

function CartCount() { 
    var cartItems = 0; 
    var cartItemTypes = iGetCookie("NumberOrdered", 0); 
    var cartItem; 
    for(i = 1; i <= cartItemTypes; i++) { 
    cartItem = String(GetCookie("Order." + i)).split("|"); 
    cartItems += parseInt(cartItem[1]); 
    } 
    $('.top-cart-count').html(cartItems); 
} 

, 나는이 같은 updateCart를 호출!

+0

* "어떤 이유로 업데이트 기능 (AddToCart) 전에 표시 기능 (CartCount)이 호출되었습니다."* 예, 클릭 이벤트에 바인딩되기 전에로드 시간에 호출됩니다. 내 대답을 보라. – zer00ne

관련 문제