2

チェックボックスがオンまたはオフの場合のリロード後のチェックボックスの状態の保持と、チェックおよびオフのifステートメントを実現しようとしています。私が間違っていること、またはそれを行うための最良の方法は何ですか?

$('.js-bbCheckbox').click(function(event) {

    $('.js-bbCheckbox').change(function(){
            if($(this).is(':checked')){
                window.location = '?filter=topRated'; 

            }else{
                window.location = '?filter=nottopRated';
            }
        });
4

2 に答える 2

0

それはうまくいくので、それは完全に間違っているわけではありません。ただし、ユーザーがページを閉じて再度開くと、チェックボックスはデフォルトの状態になります。

セッション間でチェックボックスの状態を保持したい場合は、Cookieを使用できます。プロパティを使用してJavaScriptでCookieを設定できますがdocument.cookie、複雑なので調べた方がよいでしょう。

ただし、このアプリケーションでサーバー側のテクノロジーを使用している場合は、そこからCookieを設定できます。たとえば、PHPでは次のようになります。

$_COOKIE['checkbox-topRated'] = isset($_GET['topRated']);

次に、チェックボックスを印刷するときに、そのCookieがtrueであるかどうかを確認します。それは次のようになります:

$checked = '';
if ($_COOKIE['checkbox-topRated']) {
    $checked = ' checked="checked"';
}

echo '<type input="checkbox" name="topRated"'.$checked.'>';
于 2012-10-23T17:39:48.170 に答える
0

したがって、場所を設定することはできますが、フィルターに基づいてチェックボックスを変更するにはページが必要です。この方法では、Cookie を保存する必要はありません。

 $(document).ready(function () {
        var topRated = new RegExp("[?|&]filter=topRated");
        $('.js-bbCheckbox').prop('checked', function () {
            var filter = window.location.search.match(topRated);
            return filter != null;
        }).change(function () {
            window.location = $(this).is(':checked') ? '?filter=topRated' : window.location.toString().replace(topRated, "");
        });
    });
于 2012-10-23T17:57:49.540 に答える