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

Ваш аккаунт

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

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

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

Обработка формы в JavaScript

382
17 марта 2004 года
dodger
164 / / 07.02.2003
Привет. Тут у меня куча вопросов возникло по обработке формы в JS.
Вот сама форма: http://vdogadaev.narod.ru/test/test.html
Она не работает, просто пример.
Как видно, из нее - две радиобаттон и три клавиши. Но тут то и начинается котовасия.
Радиобаттоны имеют коды: первая - 102, вторая - 105.

В зависимости от того, какую клавишу шлепнуть, будут передоваться разные значения поля DEFAULT (оно скрытое): по первой клавише: button1_102 (если выбран первый радиобатон), button1_105 (если выбран второй радиобатон);
по второй клавише: button2_102(если выбран первый радиобатон), button2_105 (если выбран второй радиобатон). Тоже и с третьей клавишой.

Как реализовать это в пределах одной формы - я не представляю.
Единственное, что приходит в голову, сделать на каждую кнопку - свою форму, но для второй и третьей поля я радиобатонами сделать hidden, и изменять их значения в зависивости от того, какой радиобатон был выбран в первой форме такого типа:
onClick="this.form.DEFAULT.value='102'";
Только, т.к. я не силен в JS, не знаю как сделать так, чтобы данные из первой формы передавались во вторую и третью. Возможно надо заменить this на имя нужной формы.

Буду благодарен за ответы.
287
18 марта 2004 года
Shiizoo
958 / / 14.03.2004
Объясни более внятно, что тебе нужно)
287
18 марта 2004 года
Shiizoo
958 / / 14.03.2004
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<script language="JavaScript" type="text/javascript">
function oSend(victim) {
var oPt=document.forms("oForm");
var oVal1=(oPt.ccsubs[0].checked)?oPt.ccsubs[0].value:oPt.ccsubs[1].value;
var oVal2=null;
switch (victim.name) {
case "Submit": {oVal2="Button1";break;}
case "Submit2": {oVal2="Button2";break;}
case "Submit3": {oVal2="Button3";break;}
}
document.all("oDefault").value=oVal2+"_"+oVal1;
alert(document.forms("oForm").oDefault.value);
}
</script>
</head>
<body>
<form name="oForm" method="post" action="XXX">
<font color="#660000">Fill out the form below:</font>
First Name:
<input type="text" tabindex="1" name="First_NAme" size="9" value="">
Last Name:
<input type="text" tabindex="2" value="" name="Last_Name" size="14">
Email:
<input tabindex="7" type="text" name="Email" size="27" VALUE="">
<font color="#660000">Select option:</font>
<input name="ccsubs" type="radio" value="102" checked>
First options
<input type="radio" name="ccsubs" value="105">
Second options
<INPUT type="hidden" id="oDefault" name="oDefault" value="ccard102">
<input name="Submit" onClick="oSend(this);" type="submit" class="smaller" value="Submit1">
<input name="Submit2" onClick="oSend(this);" type="submit" class="smaller" value="Submit2">
<input name="Submit3" onClick="oSend(this);" type="submit" class="smaller" value="Submit3">
</form>
</body>
</html>

хых.. удивительно, но я все ж разобрался в этой твоей котовасии=) подучи html) если кончено это ты ту форму составлял.. В общем передает параметры как надо.. Поэксперементируй со значениями и т.п., и поймешь как этим пользовацца.. Примерно объясняю, что в этом коде делается.. При нажатии на одну из трех твоих кнопок, вызывается функция прописанная в onclick`е.. Функция проверяет, стоит-ли checked по умолчанию на первом радио-батоне.. Если да, то записывает в переменную его значение, если нет, то записывает в переменную значение второго радио-батона.. Батонов у нас только два, будет больше, внесешь изменения в код.. Далее проверяется имя элемента, реф на который хранится в агрументе victim.. Если его имя Submit, пишет в переменную Button1.. Если Submit2, то пишет в переменную Button2.. Ну и с третьим все так же.. После этого складывает значение второй переменной (к примеру Button1), знак подчеркивания (_) и значение второй переменной (например 105).. Ну и все это присваивает твоему скрытому полю oDefault.. Имена некоторых элементов я переименовал.. Не советую использовать те, что были у тебя.. Могут быть конфликты.. Ну, вроде все.. Дальше разберешься... Я так думаю :))

--
Ремарочка... Если ты не хочешь, чтобы передавался мусор, то отдельно бишь значения radio кнопок и прочей дребедени, вынеси их в другую форму.. Например oForm2, и следовательно поменяй в скрипте путь к этим элементам.. А отправку делай из первой формы.. и все будет "хакей"..
382
18 марта 2004 года
dodger
164 / / 07.02.2003
Большое спасибо....я тоже решил эту проблему разбив на три формы (для каждой кнопки) и сделав в двух последних hidden поля.
Слушай, а не мог бы ты подсказать, где бы почитать про JS, но по нормальному чтобы написано было бы. А то я сколько не находил, там через одно место все. Я вообще-то на PHP програмлю, поэтому для меня java диковато смотрится, т.е. я не всегда понимаю, что там делается.

Заранее благодарен.
287
19 марта 2004 года
Shiizoo
958 / / 14.03.2004
Ясен пень) Это как мороженое с пластилином сравнивать) Почитать где.. Хых..
http://www.mozilla.org/docs/web-developer/ - Майкрософтовский DOM и прочее..
http://msdn.microsoft.com/workshop/..._node_entry.asp
- Описания поддержки css, js и прочего для mozilla-подобных браузеров..
http://www.opera.com/docs/specs/ - то же самое, только для opera..
Это я уже тут -> http://forum.codenet.ru/showthread.php?s=&threadid=15468
оттрубил..) Лучше чем здесь, нигде не может быть написано.. Ведь ясен перец, что только сами создатели продукта, могут написать о нем наиболее полно)) Ну за редким исключением, но наш случай, в эти эсключения не входит.. Тама в общем все спецификации написаны под эти брузлы.. От начала и до конца.. На оперовском сайте по-моему даже табличка с тэгами и прочей лабудой есть, чрезвычайно наглядная, что поддерживается, а что нет..) залазь, читай.. Все на инглише.. Но, на русском ниче нормального нет.. Только жалки попытки..)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог