Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > сохранение данных формы


Автор: Ринат 12.5.2005, 16:20
добрый день
как сохранить данные в полях, при неудачном заполнениии формы, например, пользователь оствил одно пустое поле, получаем ошибку, фокусируем курсор на этом поле (это ясно как) , но данные в других полях сохраняем
спасибо!

Автор: Aliance 12.5.2005, 16:40
В чем проблема?
Если страница перезагружается - данные автоматом сохраняются (искл. поле типа password)
Если ты имеешь ввиду просто фокус на поле (не пойму связи) - это нираз обсуждалось и приводилось в примерах.

http://forum.vingrad.ru/index.php?showtopic=36336

Автор: Sardar 12.5.2005, 16:56
Цитата(Aliance @ 12.5.2005, 15:40)
Если страница перезагружается - данные автоматом сохраняются

Нет не сохраняються, толко если история не загаженна и можно по ссылке "назад" вернуться. Два способа порешать проблему:
  • сохранить в куках, затем через JS всё вернуть - ИМХО не удобно и может проглючить
  • на сервере генерить инпуты с value, который пришёл ранее - самый простой и удобный вариант.

Автор: Aliance 12.5.2005, 16:58
Я всегда нажимал когда назад - у меня данные сохранялись. Естественно, что если перед этими линками был редирект и т.п. - то нет.

Автор: Ринат 12.5.2005, 17:06
после получения от явы собщения об ошибке в поле, данные не сохраняются

Автор: Aliance 12.5.2005, 17:10
Ринат
Java и JavaScript разные вещи smile

Автор: Ринат 12.5.2005, 17:17
javascript имел ввиду, да ясно, что разные

Автор: Aliance 12.5.2005, 17:26
Код или ссылку кинешь, где у тебя проблема?

Автор: Ринат 12.5.2005, 17:47
тот же код
вот он
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <script Language="JavaScript"> 
var validator_image;

function isEMailAddr(email) {
var str = email.value;
  var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
  if (!str.match(re)) {
      alert("pr email.");       
     validator_image = "nein.jpg";
  } else {
    validator_image = "ja.jpeg";
    checkVorname();
    
  }
 }
 
function checkVorname() {
if (document.form.vorname.value.length != 0) 
    if (document.form.nachname.value.length != 0)
        if (document.form.adresse.value.length != 0) 
            if (document.form.pass.value.length != 0) 
                if (document.form.pvd.value.length != 0) 
                    if (document.form.nummer.value.length != 0) 
                        if (document.form.alias.value.length != 0) 
                            {
                            validator_image = "ja.jpeg";
                            return (true);
                            }
                        else 
                        { 
                        validator_image = "nein.jpg";
                        alert ("alias");
                        }
                    else 
                    {
                    validator_image = "nein.jpg";
                    alert ("nummer");
                    }
                else 
                {
                validator_image = "nein.jpg";
                alert ("pvd");
                }
            else 
            {
            validator_image = "nein.jpg";
            alert ("pass");
            }
        else 
        {
        validator_image = "nein.jpg";
        alert ("adresse");
        }
    else 
    {
    validator_image = "nein.jpg";
    alert ("nachname");
    }
else 
{
validator_image = "nein.jpg";
alert ("vorname");
}                        
}

var place1 = document.getElementById("placeholder1");
place1.innerHTML = "<img scr='"+validator_image+"' ALT='' />";
var place2 = document.getElementById("placeholder2");
place2.innerHTML = "<img scr='"+validator_image+"' ALT='' />";
var place3 = document.getElementById("placeholder3");
place3.innerHTML = "<img scr='"+validator_image+"' ALT='' />";
var place4 = document.getElementById("placeholder4");
place4.innerHTML = "<img scr='"+validator_image+"' ALT='' />";
var place5 = document.getElementById("placeholder5");
place5.innerHTML = "<img scr='"+validator_image+"' ALT='' />";
var place6 = document.getElementById("placeholder6");
place6.innerHTML = "<img scr='"+validator_image+"' ALT='' />";
var place7 = document.getElementById("placeholder7");
place7.innerHTML = "<img scr='"+validator_image+"' ALT='' />";
var place8 = document.getElementById("placeholder8");
place8.innerHTML = "<img scr='"+validator_image+"' ALT='' />";
</SCRIPT>
</head>

<body>
<form name="form" method="post" onSubmit="isEMailAddr(email)">

<input type="text" name="vorname"><span id="placeholder1"></span>vorname<br>
<input type="text" name="nachname"><span id="placeholder2"></span>nachname<br>
<input type="text" name="adresse"><span id="placeholder3"></span>adresse<br>
<input  type="password" name="pass"><span id="placeholder4"></span>password<br>
<input  type="text" name="pvd"><span id="placeholder5"></span>pvd<br>
<input  type="text" name="nummer"><span id="placeholder6"></span>nummer<br>
<input  type="text" name="alias"><span id="placeholder7"></span>alias<br>
<input type="text" name="email"><span id="placeholder8"></span>email<br>
<input type="submit" value="check">
</form>  
</body>
</html>


нужно , чтобы сохранял данные полей, например, заполнил 5 полей, email неправильный, нужно, чтобы данные этих полей после получения alert сохранялись

М
 
Ринат - не спеши, пользуйся тегом code (кнопка есть сверху), не в первый раз напоминаем;-)

Автор: Aliance 12.5.2005, 18:00
Тебе нужно не 1 переменная validator_image а столько, сколько у тебя полей (т.е. в данный момент 8).

Автор: Ринат 13.5.2005, 10:02
доброе утро, сделал 8 переменных
Код


var validator_image1;
var validator_image2;
...
var validator_image8;

а что за ошибка

place1 has no properties

указывает на строку
var place1 = document.getElementById("placeholder1");
place1.innerHTML = "<img scr='"+validator_image1+"' ALT='' />";


в конце , перед закрывающим тегом скрипта ставлю
Код

var place1 = document.getElementById("placeholder1");
place1.innerHTML = "<img scr='"+validator_image1+"' ALT='' />";
var place2 = document.getElementById("placeholder2");
place2.innerHTML = "<img scr='"+validator_image2+"' ALT='' />";
var place3 = document.getElementById("placeholder3");
place3.innerHTML = "<img scr='"+validator_image3+"' ALT='' />";


Автор: Ринат 13.5.2005, 10:52
картинки не появляются, только alert

Автор: Aliance 13.5.2005, 16:17
Ринат
Не нужно флудить! Нужно относится с понимание к труду других. Мы не роботы 24 часа в сутки сидеть тут и ждать именно твоего вопроса!

Элемент с id="placeholder1" задан к HTML коде?
Кидай весь исправленный код!

Автор: Ринат 13.5.2005, 16:53
да хорошо, простите
вот полный код
я немного другой вариант с подсветкой поля сделал (красным), но хотелось бы с картинками
спасибо
вот изначальный код
Код

 <script Language="JavaScript"> 
var validator_image1;
var validator_image2;
var validator_image3;
var validator_image4;
var validator_image5;
var validator_image6;
var validator_image7;
var validator_image8;


function isEMailAddr(email) {
var str = email.value;
  var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
  if (!str.match(re)) {
      validator_image_nein;
      validator_image8 = "nein.jpg";
      alert("pr email.");       
     
 
    
  } else {
    validator_image8 = "ja.jpg";
    checkVorname();
    
  }
 }
 
function checkVorname() {
if (document.form.vorname.value.length != 0) 
    if (document.form.nachname.value.length != 0)
        if (document.form.adresse.value.length != 0) 
            if (document.form.pass.value.length != 0) 
                if (document.form.pvd.value.length != 0) 
                    if (document.form.nummer.value.length != 0) 
                        if (document.form.alias.value.length != 0) 
                            {
                            validator_image1 = "ja.jpg";
                            validator_image2 = "ja.jpg";
                            validator_image3 = "ja.jpg";
                            validator_image4 = "ja.jpg";
                            validator_image5 = "ja.jpg";
                            validator_image6 = "ja.jpg";
                            validator_image7 = "ja.jpg";
                            
                            return (true);
                            }
                        else 
                        { 
                        validator_image7 = "nein.jpg";
                        alert ("alias");
                        return (false);
                        }
                    else 
                    {
                    validator_image6 = "nein.jpg";
                    alert ("nummer");
                    }
                else 
                {
                validator_image5 = "nein.jpg";
                alert ("pvd");
                }
            else 
            {
            validator_image4 = "nein.jpg";
            alert ("pass");
            }
        else 
        {
        validator_image3 = "nein.jpg";
        alert ("adresse");
        }
    else 
    {
    validator_image2 = "nein.jpg";
    alert ("nachname");
    }
else 
{
validator_image1 = "nein.jpg";
alert ("vorname");
}                        
}

var place1 = document.getElementById("placeholder1");
place1.innerHTML = "<img scr='"+validator_image1+"' ALT='' />";
var place2 = document.getElementById("placeholder2");
place2.innerHTML = "<img scr='"+validator_image2+"' ALT='' />";
>var place3 = document.getElementById("placeholder3");
place3.innerHTML = "<img scr='"+validator_image3+"' ALT='' />";
var place4 = document.getElementById("placeholder4");
place4.innerHTML = "<img scr='"+validator_image4+"' ALT='' />";
var place5 = document.getElementById("placeholder5");
place5.innerHTML = "<img scr='"+validator_image5+"' ALT='' />";
var place6 = document.getElementById("placeholder6");
place6.innerHTML = "<img scr='"+validator_image6+"' ALT='' />";
var place7 = document.getElementById("placeholder7");
place7.innerHTML = "<img scr='"+validator_image7+"' ALT='' />";
var place8 = document.getElementById("placeholder8");
place8.innerHTML = "<img scr='"+validator_image8+"' ALT='' />";
</SCRIPT>
</head>

<body>
<form name="form" method="post" onSubmit="isEMailAddr(email)">
<input type="text" name="email"><span id="place8.innerHTML"></span>email<br>
<input type="text" name="vorname"><span id="placeholder1"></span>vorname<br>
<input type="text" name="nachname"><span id="placeholder2"></span>nachname<br>
<input type="text" name="adresse"><span id="placeholder3"></span>adresse<br>
<input  type="password" name="pass"><span id="placeholder4"></span>password<br>
<input  type="text" name="pvd"><span id="placeholder5"></span>pvd<br>
<input  type="text" name="nummer"><span id="placeholder6"></span>nummer<br>
<input  type="text" name="alias"><span id="placeholder7"></span>alias<br>

<input type="submit" value="check">
</form>  
</body>
</html>

Автор: Aliance 13.5.2005, 18:03
Используй, например такое:
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>© Aliance [ http://editor.sut.net.ru/editor.html ]</TITLE>
<script type="text/javascript" language="JavaScript">
<!--
function focusElement(formName, elemName) {
  var elem = document.forms[formName].elements[elemName];
  elem.focus();
  elem.select();
}

function isNotEmpty(elem, id) {
  var myimg = document.getElementById(id);
  var str = elem.value;
  var re = /.+/;
  if(!str.match(re)) {
      alert("Нужно заполнить все обязательные поля.");
      setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
      myimg.src = "nein.gif";
      return false;
  } else {
      myimg.src = "ja.gif";
      return true;
  }
}

function validateForm(form) {
   if (isNotEmpty(form.pole1, 'pole1')) {
      return true;
   }
   return false;
}
// -->
</SCRIPT>
</HEAD>

<BODY>

<form action="" name="f1">
Поле: <INPUT type="text" name="pole1" value="" /> <IMG src="nein.gif" id="pole1" />
<INPUT type="button" onclick="if (validateForm(this.form)) {this.form.submit() };" value="Проверить" />
</form>

</BODY>
</HTML>

Автор: Sardar 13.5.2005, 20:01
Собстна по теме наваял в отдельном топе, т.к. здесь нафлеймили smile
http://forum.vingrad.ru/index.php?showtopic=51958

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)