Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сохранить отмеченные checkbox в куках на всём сайте а не на конкретной директории
 
 автор: Terri   (03.06.2007 в 19:00)   письмо автору
 
 

Помогите разобраться со скриптом, который запоминает отмеченные 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=/;


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

   
 
 автор: CNT   (03.06.2007 в 22:12)   письмо автору
 
   для: Terri   (03.06.2007 в 19:00)
 

Поставьте закрывающую кавычку - вот здесь:
document.cookie = document.frm.lang.value + "[" + obj.value + "]=" + obj.value + "; expires=" + cookieExpires + "; path=/";
и читайте куки из любой директории сервера.

PS. Правда, я так и не понял - зачем вам дважды сохранять одно и то же значение obj.value в куках... ну да ладно - "в каждой избушке свои погремушки"

   
 
 автор: Terri   (04.06.2007 в 04:25)   письмо автору
 
   для: CNT   (03.06.2007 в 22:12)
 

спасибо большое, помогло

но я в яве скрипте мало очень понимаю, поэтому нашёл код с того сайта

и ещё хотелбы задать один вопрос, как можно вывести на одной странице в двух местах кол-во выбраных чекбоксов?

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



                var r = '';
                r = document.frm.mcnt.value++;
                document.getElementById('bookmarks_count').innerHTML = r+1;

     и

                var r = '';
                r = document.frm.mcnt.value --;
                document.getElementById('bookmarks_count').innerHTML = r-1;


и на страницу вывожу таким образом
<span id="bookmarks_count"></span>

всё нормально, работает как о должно, но если я вставлю ещё такойже спан в другом месте страници то почемуто срабатывает только один, второй стоит на месте, тоесть при выборе чекбоксов кол-во не уменьшается или не увеличивается, как сделать чтобы работали оба?

   
 
 автор: CNT   (04.06.2007 в 04:48)   письмо автору
 
   для: Terri   (04.06.2007 в 04:25)
 

Второму спану дайте другой идентификатор - <span id="bookmarks_count_2"></span> - и, соответственно, в коде прописывайте innerHTML дважды:

var r = '';
                r = document.frm.mcnt.value++;
                document.getElementById('bookmarks_count').innerHTML = r+1;
                document.getElementById('bookmarks_count_2').innerHTML = r+1;
     и

                var r = '';
                r = document.frm.mcnt.value --;
                document.getElementById('bookmarks_count').innerHTML = r-1; 
                document.getElementById('bookmarks_count_2').innerHTML = r-1;

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования