Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы Активация/сброс множественного фильтра

Активация/сброс множественного фильтра


     12.05.2014    Общие вопросы, jQuery    1968

вопрос
Всем привет!
Поставил множественный поиск по доп.полям и тут нужно довести его до ума, но что-то не выходит.
Нужно чтобы при выборе нескольких категорий после поиска выбранные категории остались активными.
Также чтобы мошна было нажать на кнопку для сброса всего фильтра тем самым возвращал весь список новостей.
Фильтр работает хорошо, но вот после нажатия (найти) все выбранные категории не выделяются.
Вот пример выбранных категорий как я хотел бы сделать.
Активация/сброс множественного фильтра

Использую такую разметку

<div style="padding:10px;text-align:center" class="form-filter">
    <form action="/" name="search_xf" method="get">    
        <input type="hidden" name="do" value="search_xf" />
        <input type="hidden" name="loc" value="1" />
Жанр:        
<input type="checkbox" class="styled" name="genre" value="комедия" /> <span onclick="CheckClick(this)" class="hand">комедия</span><br/>
<input type="checkbox" class="styled" name="genre" value="боевик" /> <span onclick="CheckClick(this)" class="hand">боевик</span><br/>
<input type="checkbox" class="styled" name="genre" value="фантастика" /> <span onclick="CheckClick(this)" class="hand">фантастика</span><br/>
<input type="checkbox" class="styled" name="genre" value="ужасы" /> <span onclick="CheckClick(this)" class="hand">ужасы</span>
<br/><br/><br/>
Год:
<input type="checkbox" class="styled" name="year" value="2000" /> <span onclick="CheckClick(this)" class="hand">2000</span><br/>
<input type="checkbox" class="styled" name="year" value="1999" /> <span onclick="CheckClick(this)" class="hand">1999</span><br/>
<input type="checkbox" class="styled" name="year" value="1988" /> <span onclick="CheckClick(this)" class="hand">1988</span><br/>
<input type="checkbox" class="styled" name="year" value="1977" /> <span onclick="CheckClick(this)" class="hand">1977</span>
        
        <input type="submit" class="xfsub" value=" Поиск " />
    </form>
</div>
<script>
function CheckClick(e){
   t=e.previousSibling.previousSibling;
   if( (t.tagName=='input')&&(t.type=='checkbox')) t.click();
}
</script>
<style type="text/css">
.hand {cursor:pointer;}
</style>

Ответа пока нет


Комментарии пользователей (13)

monach
46 | 13

monach - 12 мая 2014 03:09 - Юзер

Всем доброй ночи!
Я нашел способ как сделать активными checkbox.Но вот и тут у меня возникли трудности.
При выборе несколько checkbox и нажатии искать все они остаются активными, но если снять один checkbox, то после обновления страницы все стают не активными.
Я понял, что проблема возникает потому что у меня одинаковые name="genre" но одинаковые name мне и нужны так-как это название доп.поля также присутствуют одинаковые и year...
вот моя разметка

<div style="padding:10px;text-align:center" class="form-filter">
    <form action="/" name="search_xf" method="get" id="boxlawreg">    
        <input type="hidden" name="do" value="search_xf" />
        <input type="hidden" name="loc" value="1" />
    
<label class="lab_check"><input type="checkbox" name="genre" class="check" value="комедия"><span>комедия</span></label>
<label class="lab_check"><input type="checkbox" name="genre" class="check" value="романтика"><span>романтика</span></label>
        <input type="submit" class="xfsub" value=" Поиск " />
    </form>
</div>

<script type="text/javascript">
//===== Cookies Plugin=====   //

(function ($) {
            $.cookie = function (key, value, options) {

                // key and at least value given, set cookie...
                if (arguments.length > 1 && (!/Object/.test(Object.prototype.toString.call(value)) || value === null || value === undefined)) {
                    options = $.extend({}, options);

                    if (value === null || value === undefined) {
                        options.expires = -1;
                    }

                    if (typeof options.expires === 'number') {
                        var days = options.expires, t = options.expires = new Date();
                        t.setDate(t.getDate() + days);
                    }

                    value = String(value);

                    return (document.cookie = [
                encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value),
                options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
                options.path ? '; path=' + options.path : '',
                options.domain ? '; domain=' + options.domain : '',
                options.secure ? '; secure' : ''
            ].join(''));
                }

                // key and possibly options given, get cookie...
                options = value || {};
                var decode = options.raw ? function (s) { return s; } : decodeURIComponent;

                var pairs = document.cookie.split('; ');
                for (var i = 0, pair; pair = pairs[i] && pairs[i].split('='); i++) {
                    if (decode(pair[0]) === key) return decode(pair[1] || ''); // IE saves cookies with empty string as "c; ", e.g. without "=" as opposed to EOMB, thus pair[1] may be undefined
                }
                return null;
            };
        })(jQuery);

//======================================//

  $(document).ready(function () {
            var checkbox = $('#boxlawreg').find(':checkbox'), checkboxCookieName = 'checkbox-state';

            checkbox.each(function () {
                $(this).attr('checked', $.cookie(checkboxCookieName + '|' + $(this).attr('name')));
            });

            checkbox.click(function () {                
                $.cookie(checkboxCookieName + '|' + $(this).attr('name'), $(this).prop('checked'));
            });
        });
</script>

Как отредактировать для правильной работы скрипта?

monach
46 | 13

monach - 12 мая 2014 15:03 - Юзер

Всем привет!Ребята есть кто может помочь?

monach
46 | 13

monach - 12 мая 2014 21:06 - Юзер

Может есть другой способ сделать активными выбранные категории в фильтре?Помогите пожалуйста.Может как-то вносить в куки выбранное.Я предполагаю что корректней будет работать если все сделать на php

lutskboy
3

550 | 104

lutskboy - 12 мая 2014 21:30 - Юзер

проверяй какой урл через гет метод и прописывай например класс актив для етих категорий

monach
46 | 13

monach - 12 мая 2014 21:46 - Юзер

Извините пожалуйста!Можете скинуть пример?

lutskboy
3

550 | 104

lutskboy - 13 мая 2014 14:14 - Юзер

напишите пример ссылки в адресной строке браузера если я например выбрал боевик, и комедия.

monach
46 | 13

monach - 13 мая 2014 17:34 - Юзер

lutskboy,
Вот как выводит ссылку

http://movia-films/sf/genre:%F0%EE%EC%E0%ED%F2%E8%EA%E0/genre:%F0%EE%EC%E0%ED%F2%E8%EA%ED/

lutskboy
3

550 | 104

lutskboy - 14 мая 2014 12:36 - Юзер

Разве не вам я этот модуль поправлял? Он не правильно немного выводит инфу

monach
46 | 13

monach - 14 мая 2014 13:11 - Юзер

Я сам его подправил.

lutskboy
3

550 | 104

lutskboy - 14 мая 2014 13:16 - Юзер

ну и славно

leon
8

leon - 14 мая 2014 20:16 - Юзер

Цитата: lutskboy
проверяй какой урл через гет метод и прописывай, например, класс актив для этих категорий

У меня точно также выводится
http://Мой сайт/sf/genre:%F0%EE%EC%E0%ED%F2%E8%EA%E0/genre:%F0%EE%EC%E0%ED%F2%E8%EA%ED/
, что нужно сделать чтобы выводилось понятное имя категории в адресной строке? Я заменил выпадающий список на checkbox как сделал автор вопроса. Вы не могли бы написать, как именно можно реализовать?
Если не затруднит написать пример.
Если выбрано будет допустим 7 категорий с доп. поля (ganre) то и ссылка станет огромной, как тогда задавать класс актив этим категориям? А и если к тем же категориям выбрать несколько пунктов с доп. поля (year) допустим 2013,2014,2010 то строка станет ссылки очень большой.Помогите пожалуйста мне тоже очень интересен данный метод.

rocksmart
64

307 | 115

rocksmart - 14 мая 2014 21:15 - Юзер

Через пост надо передавать

leon
8

leon - 14 мая 2014 21:39 - Юзер

rocksmart,
Буду очень благодарен если вы напишите как это можна передать в пост.Я просто не понимаю пока в php и js/

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы