Перейти к публикации

Сохранение данных в формах при ошибке


Рекомендованные сообщения

Как можно реализовать сохранение данных введенные в формы при ошибке. Например, при регистрации, ввел все данные но неправильно указал проверочный код (капчу) и все данные приходится вводить заново.

Как то можно реализовать запоминание введенных данных и при ошибке просто повторно набрать капчу?

Ссылка на сообщение
Поделиться на других сайтах

<!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);


  return true;

}   

/**   

* Восстановить значение формы. Форма должна иметь уникальный атттрибут 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;   

	  }   

   }


   return true;

}   

//-->   

</script>   

<!-- Пример использования -->   

<form id="test1">   

<input name="text1" type="text" /><br />

<input name="text2" type="text" /><br />

<input name="text3" type="text" /><br />

<input name="text4" type="text" /><br />

<input name="text5" type="text" /><br />

<input name="text6" type="text" /><br />   

<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>

Изменено пользователем webair
Ссылка на сообщение
Поделиться на других сайтах

Что то не совсем понял, надо чтобы всё работало автоматически. Ввел неверную капчу страничка перегрузилась, сверху сообщение об ошибке, а форма должна быть заполнена, что бы осталось только повторно ввести капчу.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...