Forum Webscript.Ru

Дизайн и Верстка => Всё о Html => Тема начата: APL от 24 Октября 2008, 15:38:49

Название: Вот такая вот задачка...
Отправлено: APL от 24 Октября 2008, 15:38:49
Сижу... голову ломаю...

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

Сделал простенький тестовый html в котором мы можем выбирать какую часть формы мы хотим заполнить:




















Часть 1 нажмите для заполнения


 
Часть 2 нажмите для заполнения



 
 







проблема в слудующем:

1. мы должны отправлять на сервер данные полей только той группы которую выбрали, т.е. которая видна

2. мы должны сохранять при переключении между видимыми частями формы уже введенные данные, т.е. пользователь может переключаться между частями формы до сабмита с сохранением введенной инфы.

в вышеприведенном коде работает пункт 2, но отправляет на сервак всю форму... и display=none тоже... а этого не нужно

пробовал делать по-другому - не скрывать содержимое контейнеров, а удалять innerhtml, но тогда он не хранит уже введенное пользователем при переключении остальное херится....

как бы мне совместить, сильно не замарачиваясь, оба требования?

P.S. в javascripte я не профи... сложные разборы DOM не осилю...
Название: Вот такая вот задачка...
Отправлено: APL от 24 Октября 2008, 15:44:07
Попробовал еще вот так:




















Данные 1


 
Данные 2


 
 







как минимум IE снова отправляет всю форму... несмотря на innerhtml = \'\' :(
Название: Вот такая вот задачка...
Отправлено: brainkiller от 24 Октября 2008, 18:36:14
В порядке бреда: попробуй, скрывая часть формы, присваивать инпутам внутри неё свойство disabled.
Название: Вот такая вот задачка...
Отправлено: APL от 24 Октября 2008, 18:42:13
brainkiller

это понятно... автоматизировать нужно... чтоб само выбирало имена формы из контейнера и дазайбл делало...
а я js не так хорошо знаю...
Название: Вот такая вот задачка...
Отправлено: brainkiller от 24 Октября 2008, 20:23:08
в процедуру show():


var partToHide = ( id == 1 ) ? document.getElementById(\'tr2\') : document.getElementById(\'tr1\');
var inputs = partToHide.getElementsByTagName(\'INPUT\');
for (var i = 0; i < inputs.length; i++) {
    inputs(i).disabled = true;
}


Аналогично для всяких там select и textarea. Аналогично вешаем disabled = false на элементы другой части формы, если нужно переключаться туда-сюда.

Работоспособность не тестировал. Оставляю Вам. Приятных выходных! :)