Появление формы при выборе пункта выпадающего списка
Добрый день, Уважаемые.
Дан вот такой код:
<!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, время: 23:40. |