2016-08-30 2 views
0

모달 (부트 스트랩)의 버튼을 클릭 할 때만 쿠키를 설정하려고합니다. 쿠키를 설정하고 가져 오는 아래 코드를 작성했지만 페이지가로드되고 모달이 전혀 표시되지 않을 때 쿠키가 자동으로 설정되기 때문에 나는 어딘가에 잘못 가고 있습니다. 버튼을 클릭 할 때만 설정해야합니다. 모달이 #setcookie_btn을 클릭하지 않아도 쿠키가 어떻게 설정되는지는 잘 모릅니다. 이 코드가 잘못되었다는 아이디어가 있습니까?자바 스크립트에서 쿠키를 검사하여 부트 스트랩에서 모달을 표시하는 방법

$('#setcookie_btn').click(setCookie('{{user.get_username}}', true, 0.042)); 

    function setCookie(cname, cvalue, exdays) { 
     var d = new Date(); 
     d.setTime(d.getTime() + (exdays*24*60*60*1000)); 
     var expires = "expires="+ d.toUTCString(); 
     document.cookie = cname + "=" + cvalue + "; " + expires; 
    } 

    function getCookie(cname) { 
     var name = cname + "="; 
     var ca = document.cookie.split(';'); 
     for(var i = 0; i <ca.length; i++) { 
      var c = ca[i]; 
      while (c.charAt(0)==' ') { 
       c = c.substring(1); 
      } 
      if (c.indexOf(name) == 0) { 
       return c.substring(name.length,c.length); 
      } 
     } 
      return ""; 
    } 

    var cookie_val = getCookie('{{user.get_username}}'); 

    $(window).load(function() { 

     if(cookie_val == false || "") { 
      $('#myModal').modal({backdrop: 'static', keyboard: false});  
     } 

    }); 


</script> 

답변

1

click 이벤트를 바인딩에 대한 귀하의 구문이 올바르지 않습니다해야합니다. 사실 그것은 바인딩 대신에 setcookie 함수를 호출하고 있습니다.

변경

$('#setcookie_btn').click(setCookie('{{user.get_username}}', true, 0.042)); 

$('#setcookie_btn').click(function() 
{ 
setCookie('{{user.get_username}}', true, 0.042) 
}); 
으로
1

기분을 상하게하는 라인은 기본적은 기능 기준을 통과하지만 실제 실제로 기능을 실행하고 '핸들러'으로 리턴 값을 전달하지

$('#setcookie_btn').click(setCookie('{{user.get_username}}', true, 0.042)); 

이다. 또한

$('#setcookie_btn').click(function() { 
    setCookie('{{user.get_username}}', true, 0.042)); 
}); 

, 당신이 당신의 조건에 대한 검사 무엇 확실하지 않은 : 당신이 함수에 인수를 전달하고 핸들러로 지정하려면, 단지 익명 함수를 사용할 수 있습니까?

if(cookie_val == false || "") { 
    $('#myModal').modal({backdrop: 'static', keyboard: false});  
} 

당신은 허위 또는 빈 문자열로 cookie_val을 확인하셨습니까? 그렇다면, 그것은

if (cookie_val === false || cookie_val === '') 
관련 문제