|
|
|
| Помогите разобраться со скриптом, который запоминает отмеченные 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=/;
|
тоесть мне нужно чтобы куки были видны на всём сайте | |
|
|
|
|
|
|
|
для: Terri
(03.06.2007 в 19:00)
| | Поставьте закрывающую кавычку - вот здесь:
document.cookie = document.frm.lang.value + "[" + obj.value + "]=" + obj.value + "; expires=" + cookieExpires + "; path=/";
| и читайте куки из любой директории сервера.
PS. Правда, я так и не понял - зачем вам дважды сохранять одно и то же значение obj.value в куках... ну да ладно - "в каждой избушке свои погремушки" | |
|
|
|
|
|
|
|
для: 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>
всё нормально, работает как о должно, но если я вставлю ещё такойже спан в другом месте страници то почемуто срабатывает только один, второй стоит на месте, тоесть при выборе чекбоксов кол-во не уменьшается или не увеличивается, как сделать чтобы работали оба? | |
|
|
|
|
|
|
|
для: 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;
|
| |
|
|
|