Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранить отмеченные checkbox в куках на всём сайт 
:(
    Опции темы
WebUs
Дата 3.6.2007, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.5.2007

Репутация: нет
Всего: нет



Помогите разобраться со скриптом, который запоминает отмеченные Checkbox в куках, и отображает сколько всего выбрано, я взял такой скрипт с сайта http://www.b2b.by/ru/catalog.php?hcode=P420

а вот сам код

Код

<script language="JavaScript">

function sel( obj ){

    if( document.frm.mcnt.value == 99 ){
        obj.checked = false;
        return false;
    }

    if( document.frm.mcnt.value < 0 ){
        obj.checked = false;
        return false;
    }

    var oneHour= 60*60*1000;
    var expDate = new Date();
    expDate.setTime (expDate.getTime() + oneHour * 24 );
    var cookieExpires = expDate.toGMTString();
    if( obj.checked == true ){
        document.cookie=document.frm.lang.value+"["+obj.value+"]="+obj.value+"; expires="+cookieExpires;
        document.frm.mcnt.value++;
    }
    else{
        expDate.setTime (expDate.getTime() - oneHour * 24 );
        cookieExpires = expDate.toGMTString();
        document.cookie=document.frm.lang.value+"["+obj.value+"]="+obj.value+"; expires="+cookieExpires;
        document.frm.mcnt.value --;
    }
}
</script>


поля с checkbox выглядят таким образом

<input type=checkbox onclick="sel(this);" name='lid' value=P420_133401>
<input type=checkbox onclick="sel(this);" name='lid' value=P420_133402>
<input type=checkbox onclick="sel(this);" name='lid' value=P420_133403>
<input type=checkbox onclick="sel(this);" name='lid' value=P420_133404>
...

а чтобы вывести сколько всего выбрано checkbox  

выводим таким образом

<form name=frm>
<input type=text name='mcnt' size=2 value='0' style="border: none; text-align: center; padding: 0px;" readonly>
</form>


Всё работает как надо, но вот появилась проблема, у меня сайт использует ссылки на мод_реврайт
где разделы выглядят ввиде директорий типа cat1/cat2/ если допустим я выбираю checkbox `сы на странице первого раздела тоесть cat1/ куки сохраняются но если я зайду на раздел cat1/ca2/ то сохраненной записи в куках нет, как я понял JS сохраняет только на ту директорию где был посетитель, и уже сдругой директории их невидно. Как я понял надо добавить параметр path=/;  в строке 

Код

document.cookie=document.frm.lang.value+"["+obj.value+"]="+obj.value+"; expires="+cookieExpires;


но как я его не вставлял скрипт отказывался работать, или может я неправильно его вставляю, побывал таким образом

Код

document.cookie=document.frm.lang.value+"["+obj.value+"]="+obj.value+"; expires="+cookieExpires+"; path=/;


тоесть мне нужно чтобы куки были видны на всём сайте


Это сообщение отредактировал(а) WebUs - 3.6.2007, 19:28
PM MAIL   Вверх
GZep
Дата 3.6.2007, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 2
Всего: 32



WebUs,
  • на форуме есть тема, посвещенная кукисам. Там рассмотрены различные варианты реализации работы с куками.
  • На форуме для javascript есть своя подсветка кода. smile
Удачи.


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
WebUs
Дата 3.6.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.5.2007

Репутация: нет
Всего: нет



Цитата(GZep @ 3.6.2007,  19:01)
WebUs,

  • на форуме есть тема, посвещенная кукисам. Там рассмотрены различные варианты реализации работы с куками.
  • На форуме для javascript есть своя подсветка кода. smile
Удачи.


извиняюсь что подцветку не ту установил, исправил, я полазил на форуме нашел ещё тогда тему
http://forum.vingrad.ru/forum/topic-23902/view-all.html

есть там допустим пример записи в куки


Код

function setCookie (name, value, expires, path, domain, secure) {
    var curCookie = name + "=" + escape(value) + 
        ((expires) ? ";expires=" + expires : "") + 
        ((path) ? ";path=" + path : "") + 
        ((domain) ? ";domain=" + domain : "") + 
        ((secure) ? ";secure" : "");
    if ((escape(value)).length <= 4000) document.cookie = curCookie+";";




но разобраться я не смог, зачем там указываются скобки  ((path)  их нужно вписывать с коде или это только  показывают как применять? Сам я в яве скрипте не понимаю, поэтому решил обратится к помощи сдесь

ну вроде по примеру той темы я посмотрел, вроде параметр path я добавил правильно, что не так немогу понять?

PM MAIL   Вверх
WebUs
Дата 3.6.2007, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.5.2007

Репутация: нет
Всего: нет



всё, я разобрался

сделал так

Код

document.cookie=document.frm.lang.value+"["+obj.value+"]="+obj.value+"; path=/; expires="+cookieExpires;


и всё заработало

но тут ещё один вопрос встал, как можно подгрузить число кол-во выбраных checkbox`ов ?
в том примере выводится через поле <input> вот так

<input type=text name='mcnt' size=2 value='0' style="border: none; text-align: center; padding: 0px;" readonly>

но как-то через ниё нехотелось, с дизайном сайта както не так смотрится, хотелось подгружать както через типа <div id="count"></div>

я добавил две новые строчки
document.getElementById('count').innerHTML = document.frm.mcnt.value++;

и 

document.getElementById('count').innerHTML = document.frm.mcnt.value --;

первая срабатывает при выборе чекбокса а вторая при смене

вот что получилось

Код

function sel( obj ){

    if( document.frm.mcnt.value == 99 ){
                obj.checked = false;
                return false;
        }

    if( document.frm.mcnt.value < 0 ){
        obj.checked = false;
        return false;
    }

        document.getElementById('count').innerHTML = document.frm.mcnt.value;
                
        var oneHour= 60*60*1000;
        var expDate = new Date();
        expDate.setTime (expDate.getTime() + oneHour * 24 );
        var cookieExpires = expDate.toGMTString();
        if( obj.checked == true ){
                document.cookie=document.frm.lang.value+"["+obj.value+"]="+obj.value+"; path=/; expires="+cookieExpires;
                document.frm.mcnt.value++;

                document.getElementById('count').innerHTML = '+'+document.frm.mcnt.value++;
        }
        else{
                expDate.setTime (expDate.getTime() - oneHour * 24 );
                cookieExpires = expDate.toGMTString();
                document.cookie=document.frm.lang.value+"["+obj.value+"]="+obj.value+"; path=/; expires="+cookieExpires;
                document.frm.mcnt.value --;

                document.getElementById('count').innerHTML = '-'+document.frm.mcnt.value --;
        }
}


и когда подгружаю в HTML таким образом <div id="count"></div> почемуто он не срабатывает когда отмечаю или наоборот сбрасываю чекбоксы?

Это сообщение отредактировал(а) WebUs - 3.6.2007, 21:54
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0845 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.