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


Автор: stoutenko 3.4.2007, 18:53
Помогите разобраться. Вот есть такая форма ...модератор:  (здесь была "лажа")...

Во второй форме не прописал ниче кроме имя, мож нужно также как и в первой. Прописал Disable в input,  чтоб не писали ничего в нем. Или кукисы не правильно передаю..хз(
В форуме вроде много похожих тем, но все чето не то! Если кто знает что такая же тема приблизительная уже есть, кинте ссылку плиз (тады оффтопик).
Заранее спасибо.

Автор: stoutenko 4.4.2007, 11:08
Все что написано сверху....лажа...и работать не будет..я понял.

Народ помогите разобраться вот с этим - Передача данных через Cookie.
Это же все-таки форум JS для начинающих!
----------------------------------------------------------------------------------------------------
Вот есть библиотека (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 onunload="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 onload="readData()">


Вроде как бы все понятно. Библиотека cookies.js реализует функции записи, чтения кукисов и время их хранения. 2 функции снизу тоже вроде ясно, что одна выполняет функцию запись куки, а вторая чтение. Вопрос в том как правильно написать чтобы дата записывалась из формы (forma1) из поля имя (user_name) (из 1-го поста) на первой странице и передавалась на вторую страницу, скажем в пустую таблицу.
Обычно я делал чтото типа:

Код

<table width="200" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><script language="JavaScript">
readData();
</script></td>
  </tr>
</table>


а сам скрипт был на этой же странице выше. Единственное там присутствовал параметр или как там он называется... window.write();
Как здесь правильно написать? - document.forms[0].userName.value;
document.forms[0].username.value = data;

Спасибо всем кто ответит.

Автор: Sardar 4.4.2007, 22:15
Не используй forms[индекс], без причины привязываешься к вёрстке, много глюков будет при последующей модификации страницы. Дай главной форме аттрибут id="chto_nibud" и забирай её через document.getElementById("chto_nibud").elements.userName.

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

Автор: stoutenko 5.4.2007, 14:02
Sardar я решил пойти путем передачи данных через location.search, вроде бы все получилось, но вот застрял на такой вот штуке.

Есть форма, в ней есть тэг select, на каждую опцию стоит value.

<form name="forma1" method="post">
Выберите вариант: <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="Послать" onClick="NewWin();">
</form>
...при сабмите выполняется функция window.open и location... ну это понятно...

Как сделать так, чтобы на странице на которую передаю отразилось (в таблице или в div) следующее:

if value="1num" - то отражалось например слово Привет!
if value="2num" - то Хело!
if value="3num" - то Бла-Бла!

...в поисковике не могу найти, незнаю как правильно поставить вопрос, в других форумах говорят:

<<делать ассоциативный массив, ключами в котором будут 1num, 2num..., а значенями - нужные строки ("Привет!", "Хело!"), получать индекс выделенного элемента в селекте при сабмите, находить его value и выбирать по нему нужную вам строку из заранее созданного массива. Полученную строку цеплять туда же, к адресу.>>

теоретически все понятно, а написать не получается.
Помогите!

Добавлено через 10 минут и 42 секунды
Да еще почему то при передаче данных в другую страницу в IE пишет по-русски нормально, а в Мозилле - код, типа: %EF%F0%E8%E2%E5%F2, вместо "Привет" и везде пробелы заменяет на - %20. Как быть, кто подскажет?
на родительской странице и на дочерней стоит кодировка вин1251 в мета тэге. менял. не помогло.
при отправке в поле input ставил charset=windows-1251 и KOI8-R и utf-8. не помогло.
Может надо в самом скрипте писать кодировку. только я не знаю как подскажите плиз!

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