Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: селективное поле показывает нужный текст а остальное прячется
 
 автор: Дмитрий Смаль   (10.07.2009 в 18:27)   письмо автору
 
 

Здравствуйте!

с джавой-скрипт что-то совсем плохо у меня.

нужно такое
есть селективное поле а там три выбора
- ничего не выбрано
- физ лицо
- юр лицо

1.вот когда ничего не выбрано, то место под полем пустое
2. когда выбрано физ лицо - то форма для физлица
3. когда юрлицо - то форма для юрлица

вообще поля у физ такие же как и в юр, только в юр на два поля больше

дайте просто ссылку на где такое есть, дальше сам разберусь

спасибо

  Ответить  
 
 автор: PAT   (10.07.2009 в 19:34)   письмо автору
 
   для: Дмитрий Смаль   (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>&nbsp;   <!-- Пустой опшен с индексом 0 -->
<option>Физ/лицо <!-- Опшен с индексом 1 -->
<option>Юр/лицо  <!-- Опшен с индексом 2 -->
</select>
...

<div>
<form name="form1" style="display: none">
<!-- Форма для физического лица-->
Физ/лицо
</form>
<form name="form2" style="display: none">
<!-- Форма для юридического лица-->
Юр/лицо
</form>
</div>
...

  Ответить  
 
 автор: Дмитрий Смаль   (11.07.2009 в 11:37)   письмо автору
 
   для: 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 у себя, но что так что так неработает

  Ответить  
 
 автор: ride   (11.07.2009 в 11:57)   письмо автору
 
   для: Дмитрий Смаль   (11.07.2009 в 11:37)
 

и не будет работать: вам привели пример для работы с формами:
with (document.forms) var f1 = form1.style

а вы пытаетесь "добраться" до строки таблицы.

  Ответить  
 
 автор: Дмитрий Смаль   (11.07.2009 в 12:09)   письмо автору
 
   для: ride   (11.07.2009 в 11:57)
 

ага, понял
а можно пример с блоком div?
или чтобы display можно было для tr делать

с формой не подходит, так как у меня одна большая форма где не только информация о пользователе но и много другое

спасибо

P.S.
пробовал ваш пример как написали - работает
вот счас пробую как дивы прилепить вместо форм

  Ответить  
 
 автор: sim5   (11.07.2009 в 12:20)   письмо автору
 
   для: Дмитрий Смаль   (11.07.2009 в 12:09)
 

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

  Ответить  
 
 автор: Дмитрий Смаль   (11.07.2009 в 12:26)   письмо автору
 
   для: 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'>&nbsp;   <!-- Пустой опшен с индексом 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>


так не работает..

  Ответить  
 
 автор: sim5   (11.07.2009 в 12:35)   письмо автору
 
   для: Дмитрий Смаль   (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>

  Ответить  
 
 автор: Дмитрий Смаль   (11.07.2009 в 12:52)   письмо автору
 
   для: sim5   (11.07.2009 в 12:35)
 

а вот за это большое спасибо!

  Ответить  
 
 автор: Дмитрий Смаль   (11.07.2009 в 13:37)   письмо автору
 
   для: 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 работает только когда руками выбрать пункт а не когда он выбран по умолчанию

  Ответить  
 
 автор: sim5   (11.07.2009 в 13:44)   письмо автору
 
   для: Дмитрий Смаль   (11.07.2009 в 13:37)
 

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

  Ответить  
 
 автор: Дмитрий Смаль   (11.07.2009 в 15:50)   письмо автору
 
   для: sim5   (11.07.2009 в 13:44)
 

у меня большая форма, в которой находятся:
- разные товары и их количество
- информация о пользователе
- информация о доставке

некоторые поля проверяются на правильность ввода, поэтому после нажатия энтер:
- если какое-то поле не так заполнено, форма выводится опят с предупреждением (введённая информация сохраняется во всех полях)
- если всё заполнено правильно то выводится информация что всё хорошо (форма уже не выводится)
данный сценарий работает на одной странице

соответственно если человек выбрал юр фирма но была ошибка в каком-то поле форме, то значения переданные в POST должны остаться в форме
тогда выводится
<option value='2' selected>юр лицо</option>
но поля для юрлица остаются скрытыми, поэтому я решил просто подставлять в скрытое поле display: block; когда выбрано юрлицо

P.S.
Счас всё вот так работает, спасибо вам за код

  Ответить  
 
 автор: sim5   (11.07.2009 в 18:43)   письмо автору
 
   для: Дмитрий Смаль   (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>

  Ответить  
 
 автор: PAT   (11.07.2009 в 12:51)   письмо автору
 
   для: Дмитрий Смаль   (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 (ДВУХ) форм.



Т.е. вы ВООБЩЕ НИ ХЕРА не понимаете.
Что, в общем-то, не страшно. Ибо бывает со всеми.
Страшно то, что вы и НЕ ПЫТАЕТЕСЬ хоть что-то понять.

  Ответить  
 
 автор: Дмитрий Смаль   (11.07.2009 в 12:55)   письмо автору
 
   для: PAT   (11.07.2009 в 12:51)
 

:)
я не обиделся, так как я действительно ни хрена в джаве не понимаю
но вот поля прятать нужно, поэтому методом тыка (а иногда это даёт результат) пробовал изменить ваш код под себя

извините что уж очень глупо у меня это получилось :)

а понять джаву я пытаюсь иногда
может это смешно, но у меня получилось сделать корзину товаров в магазина на аджаксе, в котором ровно ничего не дуплю как и в джаве

и как ни странно она отлично работает, добавляет и удаляет товары и их количество!

  Ответить  
 
 автор: Дмитрий Смаль   (11.07.2009 в 13:11)   письмо автору
 
   для: PAT   (11.07.2009 в 12:51)
 

и ещё..
для меня (и наверное не только для меня) этот форум просто спасение
я очень благодарен вам и всем остальным хорошим людям, которые пытаются просветлить темноту

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

общение знающего и незнающего это интереснейшая вещь

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

раз было написано forms, то я предположил! что надо написать divs или trs для нужного мне элемента
:))))))

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования