Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.11.2009, 17:42
Новичок на форуме
Отправить личное сообщение для user1980 Посмотреть профиль Найти все сообщения от user1980
 
Регистрация: 25.10.2009
Сообщений: 2

Скрипт не дружит с onLoad
Имеется следующий скрипт (не мой, взятый с другого источника), для сохранения данных полей формы в куки.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Form Session</title>
</head>

<body>

<script type="text/javascript">
<!--
/**
* Сохраняем форму. Функция принимает ссылку на форму. Форма должна иметь
* уникальный аттрибут ID.
*/
function saveFormSession(form) {
  if(!form||!form.id||!/^[^;=]+$/.test(form.id)) return;
  var data="", tok, el, safe_name;
  for(var i=0; i<form.elements.length; i++) {
    if((el=form.elements[i]).name==""||el.getAttribute("skip_form_save")!=null) continue;
    safe_name=el.name.replace(/([)\\])/g, "\\$1");
    switch(el.type) {
      case "text":
      case "textarea": tok="v("+safe_name+"):"+el.value.replace(/([|\\])/g, "\\$1")+"||"; break;
      case "radio":
      case "checkbox": tok="s("+safe_name+"):"+(el.checked? "1": "0")+"||"; break;
      case "select-one": tok="i("+safe_name+"):"+(el.selectedIndex)+"||"; break;
      default: tok="";
    }
    data+=tok;
  }
  if(data>=4000) return alert("Can't save form into cookie, to much data...");
  document.cookie="ses"+form.id+"="+escape(data);
}

/**
* Восстановить значение формы. Форма должна иметь уникальный атттрибут ID.
*/
function restoreFormSession(form) {
   if(!form||!form.id||!/^[^;=]+$/.test(form.id)) return false;
   var strt, end, data, nm, dat;
   if((strt=document.cookie.indexOf("ses"+form.id))<0) return false;
   if((end=document.cookie.indexOf(";", strt + form.id.length + 3))<0) end=document.cookie.length;
   data=unescape(document.cookie.substring(strt + form.id.length + 4, end)).split("||");
   for(var i=0; i<data.length-1; i++) {
      nm=/^[vsi]\(((?:[^)\\]|(?:\\\))|(?:\\\\))+)\)\:/.exec(data[i]);
      nm[1]=nm[1].replace(/\\([)\\])/g, "$1");
      dat=data[i].substr(nm[0].length).replace(/\\([|\\])/g, "$1");
      switch(data[i].charAt(0)) {
        case "v": form.elements[nm[1]].value=dat; break;
        case "s": form.elements[nm[1]].checked=(dat=="1"? true: false); break;
        case "i": form.elements[nm[1]].selectedIndex=dat; break;
      }
   }
}
//-->
</script>

<!-- Пример использования -->
<form id="test1">
<input name="text[0]" type="text" /><br />
<input name="skiped" type="text" skip_form_save="true" /><br />
<input name="pass" type="password" /><br />
<input name="radio" type="radio" /><br />
<input name="check" type="checkbox" /><br />
<textarea name="txt"></textarea><br />
<select name="sel">
<option selected="selected">Test1</option>
<option>Test2</option>
<option>Test3</option>
</select><br />
<input type="button" onclick="saveFormSession(this.form)" value="Save form" />&nbsp;
<input type="button" onclick="restoreFormSession(this.form)" value="Restore form" />
</form>
</body>
</html>


в моем случае желательно, восстановление данных при загрузке страницы, т.е вызвать функцию, для восстановления (restoreFormSession(this.form)) не через onClick, а через

<BODY onLoad="restoreFormSession(this)">

По сути все должно работать, но на деле такая связка не функционирует.
Подскажите пожалуйста, каким образом возможно сделать вышесказанное (либо какие ошибки имеются). Буду крайне признателен за Вашу помощь.

P.S. Да, если кому нужно, первоисточник скрипта http://forum.vingrad.ru/forum/topic-...2010323/0.html
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Люди, помогите адаптировать скрипт под Оперу KiLLk Opera, Safari и др. 1 01.06.2009 01:05
tabber, скрипт вкладок, помогите с куками kolodkin Элементы интерфейса 0 18.04.2009 01:19
А как зделать скрипт, чтобы например скрипт 1 заменялся скриптом 2? yura371 Общие вопросы Javascript 3 06.01.2009 22:40
добавление окошка в скрипт подсчета слов Гость Общие вопросы Javascript 10 11.03.2008 17:07