Появление формы при выборе пункта выпадающего списка
Добрый день, Уважаемые.
Дан вот такой код: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Select со скрытыми блоками div</title> </head> <body> <script> function Selected(a) { var label = a.value; if (label==1) { document.getElementById("Block1").style.display='block'; document.getElementById("Block2").style.display='none'; document.getElementById("Block3").style.display='none'; document.getElementById("Block4").style.display='none'; document.getElementById("Block5").style.display='none'; } else if (label==2) { document.getElementById("Block1").style.display='none'; document.getElementById("Block2").style.display='block'; document.getElementById("Block3").style.display='none'; document.getElementById("Block4").style.display='none'; document.getElementById("Block5").style.display='none'; } else if (label==3) { document.getElementById("Block1").style.display='none'; document.getElementById("Block2").style.display='none'; document.getElementById("Block3").style.display='block'; document.getElementById("Block4").style.display='none'; document.getElementById("Block5").style.display='none'; } else if (label==4) { document.getElementById("Block1").style.display='none'; document.getElementById("Block2").style.display='none'; document.getElementById("Block3").style.display='none'; document.getElementById("Block4").style.display='block'; document.getElementById("Block5").style.display='none'; } else if (label==5) { document.getElementById("Block1").style.display='none'; document.getElementById("Block2").style.display='none'; document.getElementById("Block3").style.display='none'; document.getElementById("Block4").style.display='block'; document.getElementById("Block5").style.display='none'; } else { document.getElementById("Block1").style.display='none'; document.getElementById("Block2").style.display='none'; document.getElementById("Block3").style.display='none'; document.getElementById("Block4").style.display='none'; document.getElementById("Block5").style.display='none'; } } </script> <div>Выберите тип документа из выпадающего списка:</div></br> <select id="actSelect" class="Validate_Required " name="actSelect" aria-required="true" onChange="Selected(this)"> <option value="" selected="selected">-</option> <option value="1">Бухгалтерский документ</option> <option value="2">Договор</option> <option value="3">Дополнительное соглашение</option> <option value="4">Письмо</option> <option value="5">Приказ</option> <option value="6">Распоряжение</option> </select> <div id='Block1' style='display: none;'></br> Выберите документ: <select> <option value="" selected="selected">-</option> <option value="a">Акт</option> <option value="b">Накладная</option> <option value="c">Счет-фактура</option> </select> </div> <div id='Block2' style='display: none;'></br> Предмет договора: <select> <option value="" selected="selected">-</option> <option value="a">Выполнение работ</option> <option value="b">Оказание услуг</option> <option value="c">Поставка</option> </select> </div> <div id='Block3' style='display: none;'></br> Предмет соглашения: <select> <option value="" selected="selected">-</option> <option value="a">Изменение цены</option> <option value="b">Изменение сроков</option> <option value="b">Изменение объемов</option> </select> </div> <div id='Block4' style='display: none;'></br> Выберите тип письма: <select> <option value="" selected="selected">-</option> <option value="a">Входящее</option> <option value="b">Исходящее</option> </select> </div> <div id='Block5' style='display: none;'></br> <form method="post" action="index.php"> Полное название организации <br/> <textarea cols="40" rows="2" name="fullname"></textarea><br/> Короткое название организации <br/> <input type="text" name="smallname" /><br/> ИНН организации <br/> <input type="text" name="inn" /><br/> КПП организации <br/> <input type="text" name="kpp" /><br/> Индекс организации <br/> <input type="text" name="ind" /><br/> Страна расположения организации <br/> <input type="text" name="strana" /><br/> Город организации <br/> <input type="text" name="gorod" /><br/> Адрес организации <br/> <input type="text" name="adress" /><br/><br/> <input type="submit" name="add" value="Добавить организацию" /> <?php include_once("db.php"); if(isset($_POST['add'])) { $fullname = strip_tags(trim($_POST['fullname'])); $smallname = strip_tags(trim($_POST['smallname'])); $inn = strip_tags(trim($_POST['inn'])); $kpp = strip_tags(trim($_POST['kpp'])); $ind = strip_tags(trim($_POST['ind'])); $strana = strip_tags(trim($_POST['strana'])); $gorod = strip_tags(trim($_POST['gorod'])); $adress = strip_tags(trim($_POST['adress'])); $query = "SELECT `fullname` FROM `kontragent` WHERE `fullname` = '$fullname'"; $result = mysql_query($query); if(mysql_num_rows($result) > 0) echo 'Контрагент с таким именем присутствует в базе'; else { mysql_query("INSERT INTO kontragent (fullname, smallname, inn, kpp, ind, strana, gorod, adress) VALUES ('$fullname', '$smallname', '$inn', '$kpp', '$ind', '$strana', '$gorod', '$adress'"); echo "Контрагент добавлен в базу данных!"; } mysql_close(); } ?> </div> </body> </html> Подскажите, как вывести Block5 при выборе, допустим "Акт" или "Выполнение работ"? ЗЫ. Прошу не пинать, учусь, пишу небольшую форму для электронного архива. |
Для какой цели служат эти списки?
|
Цитата:
ЗЫ. на пхп форму не обращайте внимание, я взял ее для примера (написана для добавления контрагента в БД). |
Можно и не обращать внимания, но показывается код причем с кодом серверной стороны, и в коде ошибка - форма не закрыта. Форма одна, списки в нее не входят, а посему какой-то выбор в этих списках лишен смысла.
Но если списки определяют форму, а опций у них не одна, и если каждый набор этих опций, это своя форма, то сколько же их будет на клиенте даже представить трудно. Такие вещи лучше делать асинхронными запросами к серверу, который и будет отдавать необходимые данные - форма или еще чего либо. if (label==1) { document.getElementById("Block1").style.display='b lock'; ... и т.д. не требуется, достаточно вместо всех проверок и повторений действий: nChange="Selected(this.value)" и function Selected(a) { if(a) document.getElementById("Block"+a).style.display=' block'; else alert("Not selected"); } А все иные блоки скрыть - проходом в цикле по массиву элементов, но можно запоминать текущий выбор, а при следующем выборе скрывать только этот элемент, как предыдущий выбор. Непосредственно в базу данные так заносить нельзя, этот минимум нужно обязательно знать. |
Цитата:
Поправил вот так : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Select со скрытыми блоками div</title> </head> <body> <script> function Selected(a) { if(a) document.getElementById("Block"+a).style.display=' block'; else alert("Not selected"); } </script> <div>Выберите тип документа из выпадающего списка:</div></br> <select id="actSelect" class="Validate_Required " name="actSelect" aria-required="true" onChange="Selected(this.value)"> <option value="" selected="selected">-</option> <option value="1">Бухгалтерский документ</option> <option value="2">Договор</option> <option value="3">Дополнительное соглашение</option> <option value="4">Письмо</option> <option value="5">Приказ</option> <option value="6">Распоряжение</option> </select> <div id='Block1' style='display: none;'></br> Выберите документ: <select> <option value="" selected="selected">-</option> <option value="a">Акт</option> <option value="b">Накладная</option> <option value="c">Счет-фактура</option> </select> </div> <div id='Block2' style='display: none;'></br> Предмет договора: <select> <option value="" selected="selected">-</option> <option value="a">Выполнение работ</option> <option value="b">Оказание услуг</option> <option value="c">Поставка</option> </select> </div> <div id='Block3' style='display: none;'></br> Предмет соглашения: <select> <option value="" selected="selected">-</option> <option value="a">Изменение цены</option> <option value="b">Изменение сроков</option> <option value="b">Изменение объемов</option> </select> </div> <div id='Block4' style='display: none;'></br> Выберите тип письма: <select> <option value="" selected="selected">-</option> <option value="a">Входящее</option> <option value="b">Исходящее</option> </select> </div> <div id='Block5' style='display: none;'></br> <form method="post" action="index.php"> Полное название организации <br/> <textarea cols="40" rows="2" name="fullname"></textarea><br/> Короткое название организации <br/> <input type="text" name="smallname" /><br/> ИНН организации <br/> <input type="text" name="inn" /><br/> КПП организации <br/> <input type="text" name="kpp" /><br/> Индекс организации <br/> <input type="text" name="ind" /><br/> Страна расположения организации <br/> <input type="text" name="strana" /><br/> Город организации <br/> <input type="text" name="gorod" /><br/> Адрес организации <br/> <input type="text" name="adress" /><br/><br/> <input type="submit" name="add" value="Добавить организацию" /> </form> <?php include_once("db.php"); if(isset($_POST['add'])) { $fullname = strip_tags(trim($_POST['fullname'])); $smallname = strip_tags(trim($_POST['smallname'])); $inn = strip_tags(trim($_POST['inn'])); $kpp = strip_tags(trim($_POST['kpp'])); $ind = strip_tags(trim($_POST['ind'])); $strana = strip_tags(trim($_POST['strana'])); $gorod = strip_tags(trim($_POST['gorod'])); $adress = strip_tags(trim($_POST['adress'])); $query = "SELECT `fullname` FROM `kontragent` WHERE `fullname` = '$fullname'"; $result = mysql_query($query); if(mysql_num_rows($result) > 0) echo 'Контрагент с таким именем присутствует в базе'; else { mysql_query("INSERT INTO kontragent (fullname, smallname, inn, kpp, ind, strana, gorod, adress) VALUES ('$fullname', '$smallname', '$inn', '$kpp', '$ind', '$strana', '$gorod', '$adress'"); echo "Контрагент добавлен в базу данных!"; } mysql_close(); } ?> </div> </body> </html> |
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style> .box { display: none; } </style> <script> var currBox = 0; function Selected(a) { if(a) { document.getElementById("Block"+a).style.display = "block"; if(currBox) document.getElementById("Block"+currBox).style.display = "none"; currBox = a; } else alert("Not selected"); } </script> </head> <body> <div>Выберите тип документа из выпадающего списка:</div><br/> <select id="actSelect" class="Validate_Required " name="actSelect" onchange="Selected(this.value)"> <option value="" selected="selected">-</option> <option value="1">Бухгалтерский документ</option> <option value="2">Договор</option> <option value="3">Дополнительное соглашение</option> <option value="4">Письмо</option> <option value="5">Приказ</option> </select> <div id="Block1" class="box"><br/> Выберите документ: <select> <option value="" selected="selected">-</option> <option value="a">Акт</option> <option value="b">Накладная</option> <option value="c">Счет-фактура</option> </select> </div> <div id="Block2" class="box"><br/> Предмет договора: <select> <option value="" selected="selected">-</option> <option value="a">Выполнение работ</option> <option value="b">Оказание услуг</option> <option value="c">Поставка</option> </select> </div> <div id="Block3" class="box"><br/> Предмет соглашения: <select> <option value="" selected="selected">-</option> <option value="a">Изменение цены</option> <option value="b">Изменение сроков</option> <option value="b">Изменение объемов</option> </select> </div> <div id="Block4" class="box"><br/> Выберите тип письма: <select> <option value="" selected="selected">-</option> <option value="a">Входящее</option> <option value="b">Исходящее</option> </select> </div> <div id="Block5" class="box"><br/> <form method="post" action="index.php"> Полное название организации <br/> <textarea cols="40" rows="2" name="fullname"></textarea><br/> Короткое название организации <br/> <input type="text" name="smallname" /><br/> ИНН организации <br/> <input type="text" name="inn" /><br/> КПП организации <br/> <input type="text" name="kpp" /><br/> Индекс организации <br/> <input type="text" name="ind" /><br/> Страна расположения организации <br/> <input type="text" name="strana" /><br/> Город организации <br/> <input type="text" name="gorod" /><br/> Адрес организации <br/> <input type="text" name="adress" /><br/><br/> <input type="submit" name="add" value="Добавить организацию" /> </form> </div> </body> </html> Элемента </br> не существует. |
Цитата:
|
Цитата:
Из этого следует, что если опции других списков также будут связаны с некими блоками, то можно использовать этот же скрипт управления. Вообще возникает вопрос - с чего вдруг эти опции имеют значения "a", "b", ...? Продумайте связи, которые бы "сами отвечали на условия" и все будет просто. Замечание: $query = "SELECT `fullname` FROM `kontragent` WHERE `fullname` = '$fullname'"; $result = mysql_query($query); if(mysql_num_rows($result) > 0) echo 'Контрагент с таким именем присутствует в базе'; Не знаю, что есть fullname, но если Иванов Иван Иванович, то это еще не означает уникальность. |
Цитата:
fullname это полное наименование контрагента не ООО Ромашка, а Общество с Ограниченной Ответственностью "Ромашка" |
Цитата:
<option value="6">Распоряжение</option> это же не я придумал. |
Часовой пояс GMT +3, время: 03:27. |