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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Cookies, хранить данные форм при преходах по стр. 
:(
    Опции темы
ОнКофе
Дата 15.11.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 3.3.2006
Где: http://www.angeli na-pitt.by.ru

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




 ! 
12345c
ОнКофе! Не засоряйте форум массой простых и повторяющихся вопросов! Вы эксплуатируете внимание квалифицированных специалистов. Если нужен готоый код, обращайтесь в тему по найму специалистов. Следующее предупреждение будет в рейтинг. Другие участники форума: обратите внимание, прежде чем отвечать на вопросы этого человека, что он вопросов задаёт много, но практически ничему не учится. Как ещё можно расценить, например, пару похожих тем по использованию куков? В обеих - разные примеры (из этой темы пример я удалил), но один и тот же вопрос и метод решения. Не иначе, как желание получить решение, не решая самостоятельно.


Как решить проблему связанную с тем что после того как происходит передача данных методом GET нужно чтобы отображались те данные в списках которые были выбраны перед тем как произошла отправка. Все работает, но данные в списках после обновления страницы остаются первоначальными.
Например Первоначально стоит 1 улица и 10 дом. Выбираем 2 улицу и 7 дом - нажимаем кнопку отправить, подгружаются необходимые данные но улица и дом остается первоначальными, т.е. 1 улица и 10 дом, а нужно чтобы остались выбранные т.е. 2 улица и 7 дом.

Это сообщение отредактировал(а) 12345c - 16.11.2006, 01:43
PM MAIL WWW   Вверх
AKS
Дата 15.11.2006, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


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

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



ОнКофе, сохраните в куки выбранный индекс, а при вызове функции:
Код

MkHouseValues(document.forms["address"].elements["street"].selectedIndex); 

передавайте ей в качестве единственного аргумента или, если есть, переменную сохраненную в куки, или же индекс по-умолчанию.
PM MAIL   Вверх
AKS
Дата 15.11.2006, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


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

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



ОнКофе, вот здесь скачайте скрипт для работы с куками, там же почитайте обсуждение ("на всякий")... 
PM MAIL   Вверх
ОнКофе
Дата 15.11.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 3.3.2006
Где: http://www.angeli na-pitt.by.ru

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



Есть форма:

Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script>
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+";";    
}    
function getCookie (name) {    
    var prefix = name + "=";    
    var cookieStartIndex = document.cookie.indexOf(prefix);    
    if (cookieStartIndex == -1) return null;    
    var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);    
    if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;    
    return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));    
}    
function deleteCookie (name, path, domain) {    
    if (getCookie(name)) {    
        document.cookie = name + "=" +    
        ((path) ? "; path=" + path : "") +    
        ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-99 00:00:01 GMT"    
    }    
}
</script>
</head>

<body>
<form action="" method="get">    
 <div style="height: 100px; width: 60px; overflow: auto; float: left;">    
  <input name="q" type="checkbox" value="0" />0<br />    
  <input name="q" type="checkbox" value="1" />1<br />    
  <input name="q" type="checkbox" value="2" />2<br />    
  <input name="q" type="checkbox" value="3" />3<br />    
  <input name="q" type="checkbox" value="4" />4<br />    
  <input name="q" type="checkbox" value="5" />5<br />    
  <input name="q" type="checkbox" value="6" />6<br />    
  <input name="q" type="checkbox" value="7" />7<br />    
  <input name="q" type="checkbox" value="8" />8<br />    
  <input name="q" type="checkbox" value="9" />9<br />    
 </div> <input type="submit" value="Отправить" style=" margin-left: 30px; " />    
</form>
</body>
</html>


Как с помощью Cookies можно сделать, чтобы при нажатии кнопки "Отправить" в перезагруженной странице оставились выбранные CheckBox ? 
Нужен пример!

Это сообщение отредактировал(а) ОнКофе - 15.11.2006, 17:50
PM MAIL WWW   Вверх
vasac
Дата 15.11.2006, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



При формировании страницы, загруженной POST-запросом, формируй форму в зависимости от пришедших данных. И никаких куков.
PM WWW   Вверх
sergejzr
Дата 15.11.2006, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Модератор: Название темы должно отражать ее суть!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
ОнКофе
Дата 15.11.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 3.3.2006
Где: http://www.angeli na-pitt.by.ru

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



Цитата(vasac @  15.11.2006,  18:27 Найти цитируемый пост)
При формировании страницы, загруженной POST-запросом, формируй форму в зависимости от пришедших данных. И никаких куков.


А как быть с GET запросом?
PM MAIL WWW   Вверх
sergejzr
Дата 15.11.2006, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Ловить onsubmit формы, сохранять значения в куки. В body.onload читать куки и сажать значения

Добавлено @ 19:18 
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script>
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+";";    
}    
function getCookie (name) {    
    var prefix = name + "=";    
    var cookieStartIndex = document.cookie.indexOf(prefix);    
    if (cookieStartIndex == -1) return null;    
    var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);    
    if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;    
    return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));    
}    
function deleteCookie (name, path, domain) {    
    if (getCookie(name)) {    
        document.cookie = name + "=" +    
        ((path) ? "; path=" + path : "") +    
        ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-99 00:00:01 GMT"    
    }    
}
function setValues()
{
checks=getCookie ('checkboxes').split(',')

for(i=0;i<checks.length;i++)
{
document.getElementById('check'+i).checked=true;
}
}
function storeValues()
{
checks=new Array();

for(i=0;i<9;i++)
{
if(document.getElementById('check'+i).checked)
checks.push(i);
}
setCookie ('checkboxes', checks.join(',')); 
}
</script>
</head>
<body onload="setValues()">
<form action="" method="get" onsubmit="storeValues()">    
 <div style="height: 100px; width: 60px; overflow: auto; float: left;">    
  <input name="q" type="checkbox" id="check0" value="0" />0<br />    
  <input name="q" type="checkbox" id="check1" value="1" />1<br />    
  <input name="q" type="checkbox" id="check2" value="2" />2<br />    
  <input name="q" type="checkbox" id="check3" value="3" />3<br />    
  <input name="q" type="checkbox" id="check4" value="4" />4<br />    
  <input name="q" type="checkbox" id="check5" value="5" />5<br />    
  <input name="q" type="checkbox" id="check6" value="6" />6<br />    
  <input name="q" type="checkbox" id="check7" value="7" />7<br />    
  <input name="q" type="checkbox" id="check8" value="8" />8<br />    
  <input name="q" type="checkbox" id="check9" value="9" />9<br />    
 </div> <input type="submit" value="Отправить" style=" margin-left: 30px; " />    
</form>
</body>
</html>


Добавлено @ 19:18 
Код не проверял.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
ОнКофе
Дата 17.11.2006, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 3.3.2006
Где: http://www.angeli na-pitt.by.ru

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



по прежнему пробую разобраться с Cookie....
начал с нуля:
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script>
function set_cookie(name, value, expires)
{
if (!expires){expires = new Date();}
document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString() +  "; path=/";
}


function get_cookie(name)
{
cookie_name = name + "=";
cookie_length = document.cookie.length;
cookie_begin = 0;
while (cookie_begin < cookie_length)
{
value_begin = cookie_begin + cookie_name.length;
if (document.cookie.substring(cookie_begin, value_begin) == cookie_name)
{
var value_end = document.cookie.indexOf (";", value_begin);
if (value_end == -1){value_end = cookie_length;}
return unescape(document.cookie.substring(value_begin, value_end));
}
cookie_begin = document.cookie.indexOf(" ", cookie_begin) + 1;
if (cookie_begin == 0){break;}
}
return null;
}

function deleteCookie (name, path, domain) {     
    if (getCookie(name)) {     
        document.cookie = name + "=" +     
        ((path) ? "; path=" + path : "") +     
        ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-99 00:00:01 GMT"     
    }     
}


function save_cookie()
{
    alert(document.test.terminal.checked)
 alert(get_cookie('qwqw'));
    if (document.test.terminal.checked == "true" )
 {
 var name = "qwqw"                                          // имя cookie
 var tmp = "да"                                             // записываемое значение
 expires = new Date();                                      // получаем текущую дату
 expires.setTime(expires.getTime() + (1000 * 86400 * 365)); // вычисляем срок хранения cookie
 set_cookie(name, tmp, expires);                            // устанавливаем cookie с помощью функции set_cookie
    }
 else
    {
    var name = "qwqw"                                          // имя cookie
 var tmp = "нет"                                            // записываемое значение
 expires = new Date();                                      // получаем текущую дату
 expires.setTime(expires.getTime() + (1000 * 86400 * 365)); // вычисляем срок хранения cookie
 set_cookie(name, tmp, expires);                            // устанавливаем cookie с помощью функции set_cookie
    }
}

</script>

</head>

<body>
<form name="test" action="" method="get" onsubmit="save_cookie()">     
 <input name="terminal" type="checkbox" id="check0" value="0" />0<br />     
 <input type="submit" value="Отправить" style=" margin-left: 30px; " />     
</form>    
</body>
</html>



Вопрос. Почему значение cookie не перезаписывается. Хотел сделать так чтобы, если нажат checkbox значение cookie одно, если не нажат checkbox - значение другое
PM MAIL WWW   Вверх
ОнКофе
Дата 20.11.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 3.3.2006
Где: http://www.angeli na-pitt.by.ru

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



вот так:

Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>    
<title>Untitled Document</title>    
<script>    
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+";";        
}        
function getCookie (name) {        
    var prefix = name + "=";        
    var cookieStartIndex = document.cookie.indexOf(prefix);        
    if (cookieStartIndex == -1) return null;        
    var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);        
    if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;        
    return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));        
}        
function deleteCookie (name, path, domain) {        
    if (getCookie(name)) {        
        document.cookie = name + "=" +        
        ((path) ? "; path=" + path : "") +        
        ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-99 00:00:01 GMT"        
    }        
}  
function submitpagesCookieGet() { 
//alert(document.cookie); alert('q"+i+"');
for (var i=1; i<11; i++) { 
eval("if (getCookie('q"+i+"')) { document.getElementById('q"+i+"').checked=true}"); 
} 
} 
function submitpagesCookieSet() { 
for (var i=1; i<11; i++) { 
eval("if (document.getElementById('q"+i+"').checked) {setCookie('q"+i+"',1,'','','','')} else {deleteCookie('q"+i+"','','')}"); 
} 
} 
</script>    
</head>    
<body onload="submitpagesCookieGet()">    
<form action="" method="get" onsubmit="submitpagesCookieSet();">        
  <input id="q1" name="q1" type="checkbox" value="0" />0<br />        
  <input id="q2" name="q2" type="checkbox" value="1" />1<br />        
  <input id="q3" name="q3" type="checkbox" value="2" />2<br />        
  <input id="q4" name="q4" type="checkbox" value="3" />3<br />        
  <input id="q5" name="q5" type="checkbox" value="4" />4<br />        
  <input id="q6" name="q6" type="checkbox" value="5" />5<br />        
  <input id="q7" name="q7" type="checkbox" value="6" />6<br />        
  <input id="q8" name="q8" type="checkbox" value="7" />7<br />        
  <input id="q9" name="q9" type="checkbox" value="8" />8<br />        
  <input id="q10" name="q10" type="checkbox" value="9" />9<br />        
  <input type="submit" value="Отправить" style=" margin-left: 30px; " />        
</form> 
</body>    
</html>

PM MAIL WWW   Вверх
ОнКофе
Дата 20.11.2006, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 3.3.2006
Где: http://www.angeli na-pitt.by.ru

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



Решил попробовать сделать для SELECT, вот так :
Код


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>    
<title>Untitled Document</title>    
<script>    
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+";";        
}        
function getCookie (name) {        
    var prefix = name + "=";        
    var cookieStartIndex = document.cookie.indexOf(prefix);        
    if (cookieStartIndex == -1) return null;        
    var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);        
    if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;        
    return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));        
}        
function deleteCookie (name, path, domain) {        
    if (getCookie(name)) {        
        document.cookie = name + "=" +        
        ((path) ? "; path=" + path : "") +        
        ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-99 00:00:01 GMT"        
    }        
}  
function submitpagesCookieGet() 
{ 
  var sel = document.getElementById('sel');    
  for (var i = 0; i < sel.length; i++) 
        {eval("if (getCookie(i)) {sel.selectedIndex = i; }");} 
} 

function submitpagesCookieSet() { 
  var sel = document.getElementById('sel');    
  for (var i = 0; i < sel.length; i++) 
        {
        if (sel.item(i).selected == true){setCookie(i,1,'','','','');} else {deleteCookie(i,'','');} 
        } 
// alert(document.getElementById('sel').selectedIndex);
// alert(document.cookie);
} 
</script>    
</head>    
<body onload="submitpagesCookieGet();">    
<form action="" method="get" onsubmit="submitpagesCookieSet();">        
<SELECT id="sel" name="h_font" style="{width: 70px;}">    
 <OPTION value="001">Arial</OPTION>    
 <OPTION value="002">Helvetica</OPTION>    
 <OPTION value="003">Geneva</OPTION>    
 <OPTION value="004">Verdana</OPTION>    
 <OPTION value="005">Tahoma</OPTION>    
 <OPTION value="006">Georgia</OPTION>    
</SELECT>    
  <input type="submit" value="Отправить" style=" margin-left: 30px; " />
</form> 
</body>    
</html>



Может есть другие варианты? Или так нормально?


Это сообщение отредактировал(а) ОнКофе - 20.11.2006, 13:37
PM MAIL WWW   Вверх
ОнКофе
Дата 20.11.2006, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 3.3.2006
Где: http://www.angeli na-pitt.by.ru

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



вопрос.
Если в форме два и более SELECT
Код

<form action="" method="get" onsubmit="submitpagesCookieSet();">        
<SELECT id="sel" name="h_font" style="{width: 70px;}">    
 <OPTION value="001">Arial</OPTION>    
 <OPTION value="002">Helvetica</OPTION>    
 <OPTION value="003">Geneva</OPTION>    
 <OPTION value="004">Verdana</OPTION>    
 <OPTION value="005">Tahoma</OPTION>    
 <OPTION value="006">Georgia</OPTION>    
</SELECT>    

<SELECT id="sel" name="h" style="{width: 70px;}">    
 <OPTION value="0001">1</OPTION>    
 <OPTION value="0002">2</OPTION>    
 <OPTION value="0003">3</OPTION>    
 <OPTION value="0004">4</OPTION>    
 <OPTION value="0005">5</OPTION>    
 <OPTION value="0006">6</OPTION>    
</SELECT>    
  <input type="submit" value="Отправить" style=" margin-left: 30px; " />
</form> 

, то для каждого нужно писать соответствующую функцию или есть вариант общего вида?
PM MAIL WWW   Вверх
sergejzr
Дата 20.11.2006, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Надо писать разные идентификаторы. У тебя везде один и тот же id="sel"


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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