Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Передача данных из формы.

22K
04 апреля 2007 года
stoutenko
17 / / 16.03.2007
Народ помогите разобраться вот с этим - Передача данных через Cookie.
Вот есть библиотека (cookies.js):

Код:
function getExpDate(days, hours, minutes) {
var expDate = new Date():
if (typeof days =="number" && typeof hours == "number" && typeof hours == "number") {
expDate.setDate(expDate.getDate() + parseInt(days)):
expDate.setHours(expDate.getHours() + parselnt(hours)):
expDate.setMinutes(expDate.getMinutes() + parselnt(minutes)):
return expDate.toGMTString();
}
}
function getCookieVal(offset) {
var endstr = document.cookie.indexOf (":", offset);
if (endstr == 1) {
endstr = document.cookie.length:
}
return unescape(document.cookie.substring(offset. endstr));
}
function getCookie(name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring^, j) == arg) {
return getCookieVal(j):
}
i = document.cookie.indexOf(" ". i) + 1;
if (i == 0) break:
}
return null;
}
function setCookie(name, value, expires, path, domain. secure) {
document.cookie = name + "=" + escape (value) +
((expires) ? ": expires=" + expires : "") +
((path) ? ": path=" + path : "") +
((domain) ? ": domain=" + domain : "") +
((secure) ? ": secure" : "");
}
function deleteCookie(name.path.domain) {
if (getCookie(name)) {
document.cookie = name + "=" +
((path) ? ": path=" + path : "") +
((domain) ? ": domain=" + domain : "") +
";expires=Thu. 01 Jan 70 00:00:01 GMT";
}
}


И вот такие 2 функции.

 
Код:
<script type="text/javascript" src="cookies.js"></script>
<script language="JavaScript" type="text/javascript">
function saveData() {
var data = document.forms[0].userName.value;
var expDate = getExpDate(180. 0. 0):
setCookie("userName". data. expDate):
}
</script>
<body &#111;&#110;unload="saveData()">



 
Код:
<script type="text/javascript" src="cookies.js"></script>
<script language="JavaScript" type="text/javascript">
function readData() {
var data = getCookie("userName):
document.forms[0].username.value = data:
}
</script>
<body &#111;&#110;load="readData()">


Вроде как бы все понятно. Библиотека cookies.js реализует функции записи, чтения кукисов и время их хранения. 2 функции снизу тоже вроде ясно, что одна выполняет функцию запись куки, а вторая чтение. Вопрос в том как правильно написать чтобы дата записывалась из формы (forma1) из поля имя (name1) на первой странице (index.html) и передавалась на вторую popup страницу (result.html), скажем в пустую таблицу. Ниже соответственно index и result... в них я уже вставил "выполнить функции". Но скрипты пока не вставлял, т.к. это далее суть вопроса.

Код:
<html><script src="cookies.js"></script><body>
<form name="forma1" action="???" method="post">
Ваше имя: <input name="name1" type="text" size="25"><br>
Выберите вариант: <select name="userchose" size="1">
        <option value="1num">Вариант 1</option>
        <option value="2num">Вариант 2</option>
        <option value="3num">Вариант 3</option>
      </select><br>
<input name="ok-button" type="submit" value="Послать" &#111;&#110;Click="java script:window.open('result.html', '', 'Toolbar=0, Location=0, Directories=0, Status=0, Menubar=1, Resizable=0, Scrollbars=0, Copyhistory=1, Width=640, Height=480, Top=0, Left=0');saveData();">
</form>
</body>
</html>


Код:
<html>
<script src="cookies.js"></script>
<body &#111;&#110;Load="readData()">
<table width="500" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="163"><div align="right">Ваше имя: </div></td>
    <td width="10"> </td>
    <td width="333">Сюда нужно вставить имя</td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
  </tr>
  <tr>
    <td><div align="right">Вы выбрали вариант: </div></td>
    <td> </td>
    <td>Сюда нужно вставить выбранный вариант</td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
  </tr>
 
  <tr>
    <td><div align="right">Ответ:</div></td>
    <td> </td>
    <td>А здесь вставить "мой ответ"</td>
  </tr>
</table>
</body>
</html>


Вопрос 1: Как правильно записать параметры:

var data = document.forms[0].userName.value;
setCookie("userName". data. expDate):

var data = getCookie("userName):
document.forms[0].username.value = data:

Вопрос 2:
В index.html есть тэг select, на каждую опцию стоит value.
Как сделать так, чтобы в поле "мой ответ" отразилось следующее:
if value="1num" - то отражалось например слово Привет!
if value="2num" - то Хело!
if value="3num" - то Бла-Бла!

Спасибо всем кто ответит.
22K
04 апреля 2007 года
stoutenko
17 / / 16.03.2007
вроде много всяки способов передать данные...мож как по другому...не через кукисы?
25K
04 апреля 2007 года
DarkRebel
15 / / 26.03.2007
1. решение попроще в данном случае - параметры прицепить к адресу открываемого попупа (result.html?your_data), строка с ними будет доступна через window.location.search в самом попупе.
2. сделать ассоциативный массив, ключами в котором будут 1num, 2num..., а значенями - нужные строки ("Привет!", "Хело!"), получать индекс выделенного элемента в селекте при сабмите, находить его value и выбирать по нему нужную вам строку из заранее созданного массива. Полученную строку цеплять к туда же, к адресу

но есть решение еще проще )
использовать window.opener - можете прямо из попупа считать все, что нужно с "родительской" страницы.
22K
04 апреля 2007 года
stoutenko
17 / / 16.03.2007
Цитата: DarkRebel
1. решение попроще в данном случае - параметры прицепить к адресу открываемого попупа (result.html?your_data), строка с ними будет доступна через window.location.search в самом попупе.
2. сделать ассоциативный массив, ключами в котором будут 1num, 2num..., а значенями - нужные строки ("Привет!", "Хело!"), получать индекс выделенного элемента в селекте при сабмите, находить его value и выбирать по нему нужную вам строку из заранее созданного массива. Полученную строку цеплять к туда же, к адресу

но есть решение еще проще )
использовать window.opener - можете прямо из попупа считать все, что нужно с "родительской" страницы.


использовать window.opener - а это идея неплохая! чтож это я сам то не допер.
...не то чтобы заморачиваться не хочется с другими решениями (любое решение всегда интересно!), просто время в обрез.
Спасибо DarkRebel :)

22K
05 апреля 2007 года
stoutenko
17 / / 16.03.2007
DarkRebel писал:
Цитата:
2. сделать ассоциативный массив, ключами в котором будут 1num, 2num..., а значенями - нужные строки ("Привет!", "Хело!"), получать индекс выделенного элемента в селекте при сабмите, находить его value и выбирать по нему нужную вам строку из заранее созданного массива. Полученную строку цеплять к туда же, к адресу



Никак не получается у меня это написать. Ты не мог бы мне помочь или хоть примерчик какой показать.

22K
05 апреля 2007 года
stoutenko
17 / / 16.03.2007
Да еще почему то при передаче данных в другую страницу в IE пишет по-русски нормально, а в Мозилле - код, типа: %EF%F0%E8%E2%E5%F2, вместо "Привет" и везде пробелы заменяет на - %20. Как быть, кто подскажет?
25K
05 апреля 2007 года
DarkRebel
15 / / 26.03.2007
пользовать unescape:
var newString=unescape(urlEncodedString);
22K
05 апреля 2007 года
stoutenko
17 / / 16.03.2007
ааа спасибо DarkRebel....все получилось... а по массиву подскажешь?
22K
05 апреля 2007 года
stoutenko
17 / / 16.03.2007
хотел сделать что-то типа:

<script language="JavaScript">
<!--
function read_select()
{
var msg
msg = document.location.getElementById("forma1").options[document.getElementById("forma1").selectedIndex].value);
if (msg=="num1") {document.write(unescape("Привет!"))}
else if (msg=="num2") {document.write(unescape("Хело!"))}
else if (msg=="num3") {document.write(unescape("Бла-бла!"))}
}
//-->
</script>

Понятно что тут каша, но хоть в правильном направлении двигаюсь или нет?
25K
05 апреля 2007 года
DarkRebel
15 / / 26.03.2007
Код:
<script language="JavaScript">
<!--
var msgs=new Array();
msgs["num1"]="Привет!";
msgs["num2"]="Хело!";
msgs["num3"]="Бла-бла!";

function read_select()
{
var msg
msg = document.location.getElementById("forma1").options[document.getElementById("forma1").selectedIndex].value);
document.write(msgs[msg]);
}
//-->
</script>
22K
05 апреля 2007 года
stoutenko
17 / / 16.03.2007
Респект тебе DarkRebel. Спасибо.
Ща попробую.
22K
06 апреля 2007 года
stoutenko
17 / / 16.03.2007
DarkRebel чето не работает твой скрипт! Выдает ошибку на странице.
22K
06 апреля 2007 года
stoutenko
17 / / 16.03.2007
Ладно хренсним...и снова иду другим путем.
Хочу объяснить что мне нужно и что я уже сделал, думаю что я уже где-то рядом. Подскажите кто-нить.

Имеется всего 4 страницы:
1.index.html
2.page1.html
3.page2.html
4.page3.html

В index.html лежит форма такого вида:

Код:
<html>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<head></head>
<script language="JavaScript">
<!--
var select1 = document.form1.userF.getElementById("n1").value;
var select2 = document.form1.userF.getElementById("n2").value;
var select3 = document.form1.userF.getElementById("n3").value;

function newPage3()
{
if (document.getElementById("form1").options[document.getElementById("form1").selectedIndex].value) = select1)
{ newPage1(); }
else { if (document.getElementById("form1").options[document.getElementById("form1").selectedIndex].value) = select2)
{ newPage2(); }}
else {
value1=""+document.form1.userF.value;
value2=""+document.form1.userI.value;
newwin = open("page3.html","newwin","width=640,height=480,top=0,left=0,status=yes,toolbar=yes,menubar=yes");
newwin.location="page3.html?="+value1+"="+value2;
newwin.window.resizeTo(screen.availWidth, screen.availHeight);
}
}
function newPage1()
{
value1=""+document.form1.userF.value;
value2=""+document.form1.userI.value;
newwin = open("page1.html","newwin","width=640,height=480,top=0,left=0,status=yes,toolbar=yes,menubar=yes");
newwin.location="page1.html?="+value1+"="+value2;
newwin.window.resizeTo(screen.availWidth, screen.availHeight);
}
function newPage2()
{
value1=""+document.form1.userF.value;
value2=""+document.form1.userI.value;
newwin = open("page2.html","newwin","width=640,height=480,top=0,left=0,status=yes,toolbar=yes,menubar=yes");
newwin.location="page2.html?="+value1+"="+value2;
newwin.window.resizeTo(screen.availWidth, screen.availHeight);
}
//-->
</script>
<body>
<form id="form1" enctype="text/plain">
<p style="margin:0 0 0 20px;">Ваше имя: <input type="text" name="userI" style="width:350px;"></p><br>
<p style="margin:0 0 0 8px;">Ваш выбор: <select name="userF" size="1" id="userF" style="width:350px;">
<option id="n1" value="вы выбрали вариант 1">вариант 1</option>
<option id="n2" value="вы выбрали вариант 2">вариант 2</option>
<option id="n3" value="вы выбрали вариант 3">вариант 3</option>
</select></p><br>
<p style="margin:0 0 0 161px;"><input type="submit" name="button1" value=" ОК " &#111;&#110;Click="newPage3()">
<input type="reset" name="button2" value="Сброс"></p>
</form>
</body>
</html>


Нужно чтобы при выборе варианта из SELECT грузилась необходимая страница (page1, page2, page3) через функции и т.к. должна происходить передача данных вариант с onChange в SELECT не катит!
Прошу помочь.
Спасибо.
22K
06 апреля 2007 года
stoutenko
17 / / 16.03.2007
Все уже разобрался... сделал вот так:
я заменил value в OPTION на 111,222,333 для пробы.

 
Код:
function newPage3()
{
var n1
n1 = document.form1.userF.value;

if (n1=='222') { newPage2(); }
else {
value1=""+document.form1.userF.value;
value2=""+document.form1.userI.value;
newwin = open("page1.html".................... и т.д.


все работает,

но когда попытался добавить еще один... не идет сцуко!
запарился со скобками и с "if", "else" (сколько их можно ставить подряд и в какой последовательности???)

Вот так уже не работает

Код:
function newPage3()
{
var n1
n1 = document.form1.userF.value;

if (n1=='222') { newPage2(); }
else { if (n1=='333') { newPage3(); }
else {
value1=""+document.form1.userF.value;
value2=""+document.form1.userI.value;
newwin = open("page1.html"............ и т.д.
}
}
}


мож надо еще операторов добавить? а?
22K
06 апреля 2007 года
stoutenko
17 / / 16.03.2007
Сам нашел ошибку...просто был вызов одинаковых функций...

ВСЕ ОФФ ТОПИК!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог