Дизайн и Верстка > Всё о Html
Вот такая вот задачка...
(1/1)
APL:
Сижу... голову ломаю...
Есть форма, состоящая из нескольких частей, эти части чел не должен заполнять вместе, т.е либо одну, либо другую....
Сделал простенький тестовый html в котором мы можем выбирать какую часть формы мы хотим заполнить:
--- Код: ---
function send() {
if (document.getElementById(\'tr1\').style.display == \'none\') {
document.getElementById("tr1").innerHTML = \'\';
}
if (document.getElementById(\'tr2\').style.display == \'none\') {
document.getElementById("tr2").innerHTML = \'\';
}
}
function show(id) {
document.getElementById(\'tr1\').style.display = \'none\';
document.getElementById(\'tr2\').style.display = \'none\';
if ( document.getElementById(\'tr\'+id).style.display == \'none\' ) {
document.getElementById(\'tr\'+id).style.display = \'\';
} else {
}
}
Часть 1 нажмите для заполнения
Часть 2 нажмите для заполнения
document.getElementById(\'tr1\').style.display = \'\';
document.getElementById(\'tr2\').style.display = \'none\';
--- Конец кода ---
проблема в слудующем:
1. мы должны отправлять на сервер данные полей только той группы которую выбрали, т.е. которая видна
2. мы должны сохранять при переключении между видимыми частями формы уже введенные данные, т.е. пользователь может переключаться между частями формы до сабмита с сохранением введенной инфы.
в вышеприведенном коде работает пункт 2, но отправляет на сервак всю форму... и display=none тоже... а этого не нужно
пробовал делать по-другому - не скрывать содержимое контейнеров, а удалять innerhtml, но тогда он не хранит уже введенное пользователем при переключении остальное херится....
как бы мне совместить, сильно не замарачиваясь, оба требования?
P.S. в javascripte я не профи... сложные разборы DOM не осилю...
APL:
Попробовал еще вот так:
--- Код: ---
function send() {
if (document.getElementById(\'tr1\').style.display == \'none\') {
document.getElementById("tr1").innerHTML = \'\';
}
if (document.getElementById(\'tr2\').style.display == \'none\') {
document.getElementById("tr2").innerHTML = \'\';
}
}
function show(id) {
document.getElementById(\'tr1\').style.display = \'none\';
document.getElementById(\'tr2\').style.display = \'none\';
if ( document.getElementById(\'tr\'+id).style.display == \'none\' ) {
document.getElementById(\'tr\'+id).style.display = \'\';
} else {
}
}
Данные 1
Данные 2
document.getElementById(\'tr1\').style.display = \'\';
document.getElementById(\'tr2\').style.display = \'none\';
--- Конец кода ---
как минимум IE снова отправляет всю форму... несмотря на innerhtml = \'\' :(
brainkiller:
В порядке бреда: попробуй, скрывая часть формы, присваивать инпутам внутри неё свойство disabled.
APL:
brainkiller
это понятно... автоматизировать нужно... чтоб само выбирало имена формы из контейнера и дазайбл делало...
а я js не так хорошо знаю...
brainkiller:
в процедуру 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 на элементы другой части формы, если нужно переключаться туда-сюда.
Работоспособность не тестировал. Оставляю Вам. Приятных выходных! :)
Навигация
Перейти к полной версии