2016-05-12 16 views
1

私の_Layout.cshtmlに以下のJSがあります。基本的に、すべての「ページ読み込み」では、コードがCookieに設定する必要があるにもかかわらず、チェックボックスはチェックされています(true)。
ページロード時にfalseに設定した場合(例:$("#ShowInactive").prop("checked", false);)、コードでわかるように、Cookieに基づくClickイベントのチェックボックスの値を設定できます。チェックボックスコントロールはページロード時に値を受け入れません

私は、機能が$(document).ready(function() {であることを試してみましたが、注目点が異なりました。

<script type="text/javascript"> 
    $(function() { 
     console.log('1 - ' + Cookies.get('ShouldShowInactive')); 
     var Inactive = Cookies.get('ShouldShowInactive') == true ? true : false; 
     $("#ShowInactive").prop("checked", Inactive); 

     $("#ShowInactive").click(function() { 
      console.log('2 - ' + Cookies.get('ShouldShowInactive')); 
      var ShowInactive = this.checked ? true : false; 
      console.log('3 - ' + ShowInactive); 
      Cookies.set('ShouldShowInactive', ShowInactive); 
      console.log('4 - ' + Cookies.get('ShouldShowInactive')); 
     }); 
    }); 
</script> 

チェックボックスコントロール:

<div class="pull-right checkbox"> 
    <label class="btn btn-success"> 
     @(Html.Kendo().CheckBox().Name("ShowInactive").Label("Show Inactive")) 
    </label> 
</div> 

値は常にtrueまたはfalseとして示されている私のConsole.log()通過とChromeのDev Toolsを使用して、私は、クッキーを点検。また、上記の方法の前に、私はそれをまっすぐに設定しようとしていました。Cookies.get('ShouldShowInactive')基本的に、チェックボックスはページロード時に常にチェックされ、現在の方法ではチェックされませんでした。どちらの方法もCookieの正しい値を無視します。

+0

に変更します。Cookies.get()関数は文字列またはブール値を返しますか? – tihom

+0

私は 'Inactive' varがとにかくブール値に設定されているので、これは問題ではないと思います=>'? true:false' – TCHdvlp

+1

@TCHdvlp '" true "== true'はfalseを返します – tihom

答えて

1

Cookies.get()関数は文字列を返し、"true" == trueはfalseと評価されます。条件を

var Inactive = Cookies.get('ShouldShowInactive') == "true" ? true : false; 
関連する問題