|
|
|
| Здравствуйте!
с джавой-скрипт что-то совсем плохо у меня.
нужно такое
есть селективное поле а там три выбора
- ничего не выбрано
- физ лицо
- юр лицо
1.вот когда ничего не выбрано, то место под полем пустое
2. когда выбрано физ лицо - то форма для физлица
3. когда юрлицо - то форма для юрлица
вообще поля у физ такие же как и в юр, только в юр на два поля больше
дайте просто ссылку на где такое есть, дальше сам разберусь
спасибо | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(10.07.2009 в 18:27)
| | В самом примитивном виде:
<script>
function myFunc (x)
{
with (document.forms) var f1 = form1.style, f2 = form2.style;
if (x == 0) {f1.display = 'none'; f2.display = 'none' }
if (x == 1) {f1.display = 'block'; f2.display = 'none' }
if (x == 2) {f1.display = 'none'; f2.display = 'block'}
}
</script>
<select onchange="myFunc (this.selectedIndex)">
<option> <!-- Пустой опшен с индексом 0 -->
<option>Физ/лицо <!-- Опшен с индексом 1 -->
<option>Юр/лицо <!-- Опшен с индексом 2 -->
</select>
...
<div>
<form name="form1" style="display: none">
<!-- Форма для физического лица-->
Физ/лицо
</form>
<form name="form2" style="display: none">
<!-- Форма для юридического лица-->
Юр/лицо
</form>
</div>
...
|
| |
|
|
|
|
|
|
|
для: PAT
(10.07.2009 в 19:34)
| | Спасибо за пример.
Вроди всё понятно написано, но не работает.
сделал чуть проще - чтобы при выборе юрлица появлялось одно поле:
<tr><td><img src='templates/images/mark.gif'></td>
<td>Статус:</td>
<td><select name='status' onchange=\"select_status (this.selectedIndex)\">
<option id='0' value='0'>выбирите статус</option>
<option id='1' value='1'>физическое лицо</option>
<option id='2' value='2'>юридическое лицо</option>
</select>
</td>
</tr>
<tr id='form1' style='display: none'><td></td>
<td>Название организации:</td>
<td><input class='input' maxlength='50' name='company' value=\"$post[company]\"></td>
</tr>
|
с скрипт упростил:
function select_status (id) {
with (document.forms) var f1 = form1.style;
if (id == 0) {f1.display = 'none'; }
if (id == 1) {f1.display = 'none'; }
if (id == 2) {f1.display = 'block';}
}
|
почему-то не работает.
я заметил что у тебя в коде <form name="form1" style="display: none">
name исправил на id у себя, но что так что так неработает | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(11.07.2009 в 11:37)
| | и не будет работать: вам привели пример для работы с формами:
with (document.forms) var f1 = form1.style
|
а вы пытаетесь "добраться" до строки таблицы. | |
|
|
|
|
|
|
|
для: ride
(11.07.2009 в 11:57)
| | ага, понял
а можно пример с блоком div?
или чтобы display можно было для tr делать
с формой не подходит, так как у меня одна большая форма где не только информация о пользователе но и много другое
спасибо
P.S.
пробовал ваш пример как написали - работает
вот счас пробую как дивы прилепить вместо форм | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(11.07.2009 в 12:09)
| | Ну уберите в ячейку таблицы те поля формы, которые нужно показывать/скрывать, у управляйте видимостью TR как вы и пытаетесь делать, только TR, а не формы. | |
|
|
|
|
|
|
|
для: sim5
(11.07.2009 в 12:20)
| | так что-ли написать with (document.tr) ??
function tr (x)
{
with (document.tr) var f1 = form1.style, f2 = form2.style;
if (x == 3) {f1.display = 'none'; f2.display = 'none' }
if (x == 4) {f1.display = 'block'; f2.display = 'none' }
if (x == 5) {f1.display = 'none'; f2.display = 'block'}
}
|
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<form method="post" action=""><select onchange="tr (this.selectedIndex)">
<option id='3' value='3'> <!-- Пустой опшен с индексом 0 -->
<option id='4' value='4'>Физ/лицо <!-- Опшен с индексом 1 -->
<option id='5' value='5'>Юр/лицо <!-- Опшен с индексом 2 -->
</select></form>
</td>
</tr>
<tr name="form1" style="display: none"><td>
<!-- Форма для физического лица-->
Физ/лицо
</td></tr>
</table>
|
так не работает.. | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(11.07.2009 в 12:26)
| | Ничего не надо. Если вам нужно скрыть/показать часть формы, то можно:
<form action="">
<select name="" onchange="document.getElementById('adds').style.display = this.value;">
<option value="none">Select</option>
<option value="none">Type 1</option>
<option value="">Type 2</option>
</select>
<table>
<tr>
<td><input type="text"><br>
<input type="text"></td>
</tr>
<tr id="adds" style="display: none;">
<td><input type="text"><br>
<input type="text"></td>
</tr>
</table>
</form>
|
| |
|
|
|
|
|
|
|
для: sim5
(11.07.2009 в 12:35)
| | а вот за это большое спасибо! | |
|
|
|
|
|
|
|
для: sim5
(11.07.2009 в 12:35)
| | улучшил ваш код, теперь это то, что было нужно
<form action="">
<select name="" onchange="document.getElementById('adds'+this.selectedIndex).style.display = 'block';">
<option value="0">Select</option>
<option value="1">Type 1</option>
<option value="2">Type 2</option>
</select>
<table>
<tr>
<td><input type="text"><br>
<input type="text"></td>
</tr>
<tr id="adds2" style="display: none;">
<td><input type="text"><br>
<input type="text"></td>
</tr>
</table>
</form>
|
но плохо то, что если стоит
<option value="2" selected>Type 2</option>
|
то спрятанные поля не появляются, а это нужно когда форма не отправилась и надо чтобы выбранные поля сохранились, придётся на пхп вписать style="display:block;" если єлемент вібран
очевидно что onchange работает только когда руками выбрать пункт а не когда он выбран по умолчанию | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(11.07.2009 в 13:37)
| | нужно когда форма не отправилась и надо чтобы выбранные поля сохранились - ничего не понял. Вы опять изменили совсем не думая, что теперь не будет работать. Вам надо передавать номер выбранного типа на сервер? По умолчанию какая должна быть форма? | |
|
|
|
|
|
|
|
для: sim5
(11.07.2009 в 13:44)
| | у меня большая форма, в которой находятся:
- разные товары и их количество
- информация о пользователе
- информация о доставке
некоторые поля проверяются на правильность ввода, поэтому после нажатия энтер:
- если какое-то поле не так заполнено, форма выводится опят с предупреждением (введённая информация сохраняется во всех полях)
- если всё заполнено правильно то выводится информация что всё хорошо (форма уже не выводится)
данный сценарий работает на одной странице
соответственно если человек выбрал юр фирма но была ошибка в каком-то поле форме, то значения переданные в POST должны остаться в форме
тогда выводится
<option value='2' selected>юр лицо</option>
но поля для юрлица остаются скрытыми, поэтому я решил просто подставлять в скрытое поле display: block; когда выбрано юрлицо
P.S.
Счас всё вот так работает, спасибо вам за код | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(11.07.2009 в 15:50)
| | Так как сейчас у вас (выше) работать не будет, вернее будет только для единственного опшена.
<script>
function showItems(n) {
var arr = new Array;
arr[1]='none';
arr[2]='block';
document.getElementById('add').style.display = arr[n];
}
</script>
<form action="">
<select name="" onchange="if (this.value) showItems(this.value)">
<option value="">Select</option>
<option value="1">Type 1</option>
<option value="2">Type 2</option>
</select>
<table>
<tr>
<td><input type="text"><br>
<input type="text"></td>
</tr>
<tr id="add" style="display: none;">
<td><input type="text"><br>
<input type="text"></td>
</tr>
<tr>
<td><input type="submit" value="Send"></td>
</tr>
</table>
</form>
|
| |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(11.07.2009 в 12:26)
| | Может, вам лучше попробовать коров пасти?
Честное слово, я обидеть вас не хочу.
Просто так бывает - некоторым что-то НЕ ДАНО в принципе - устройство организма не позволяет.
Вы пишете ВСЁ, ЧТО ВАМ ПРИХОДИТ В ГОЛОВУ, совершенно не задумываясь.
И хотите, чтобы ВСЁ, что вам ВЗБРЕНДИЛО написать, - работало.
Так не бывает.
Вот у меня было написано:
with (document.forms) var f1 = form1.style, f2 = form2.style;
| Что в переводе на русский язык означает:
ВНУТРИ "коллекции всех форм" документа найти две конкретные формы с именами form1 и form2, и стили этих двух конкретных форм сохранить в переменных f1 и f2.
Вы попытались это дело "присобачить" к ОДНОЙ(!) СТРОКЕ(!) таблицы.
Взяли, для начала, и ТУПО заменили "коллекцию всех форм" документа document.forms на некое document.tr.
Что это?
"Коллекция всех строк" документа?
Такой НЕ БЫВАЕТ.
Далее, я работал с 2 (ДВУМЯ) формами с 2 (ДВУМЯ) разными именами. Потому и использовал 2 (ДВЕ) переменные f1 и f2.
У вас строка - 1 (ОДНА), с 1 (ОДНИМ) именем.
Но вы ТУПО переписываете мой код для 2 (ДВУХ) форм.
Т.е. вы ВООБЩЕ НИ ХЕРА не понимаете.
Что, в общем-то, не страшно. Ибо бывает со всеми.
Страшно то, что вы и НЕ ПЫТАЕТЕСЬ хоть что-то понять. | |
|
|
|
|
|
|
|
для: PAT
(11.07.2009 в 12:51)
| | :)
я не обиделся, так как я действительно ни хрена в джаве не понимаю
но вот поля прятать нужно, поэтому методом тыка (а иногда это даёт результат) пробовал изменить ваш код под себя
извините что уж очень глупо у меня это получилось :)
а понять джаву я пытаюсь иногда
может это смешно, но у меня получилось сделать корзину товаров в магазина на аджаксе, в котором ровно ничего не дуплю как и в джаве
и как ни странно она отлично работает, добавляет и удаляет товары и их количество! | |
|
|
|
|
|
|
|
для: PAT
(11.07.2009 в 12:51)
| | и ещё..
для меня (и наверное не только для меня) этот форум просто спасение
я очень благодарен вам и всем остальным хорошим людям, которые пытаются просветлить темноту
тут ведь нужно не только правильно вопрос задать, но и ответь так, чтобы непонимающий понял
общение знающего и незнающего это интереснейшая вещь
чтобы вас развеселить я приведу цепочку моих умозаключений:
раз было написано forms, то я предположил! что надо написать divs или trs для нужного мне элемента
:)))))) | |
|
|
|